2014-06-16 198 views
1

我需要找到一種方法來進行Android的Firefox(fennec)和我的Android服務之間的通信。 的解決方案之一是使用的WebSockets 代碼進行通訊:Firefox中是否支持Android插件支持WebSocket?

var ws = new WebSocket("ws://localhost:8887/"); 
ws.onopen = function() { 
    console.log("SENDING"); 
    ws.send("Hello messsage"); 
} 

06-16 13:14:10.099: I/Gecko(8055): Message: ReferenceError: WebSocket is not defined

是WebSocket的支持在非洲小狐插件?

回答

1

WebSocket s爲可在Android版Firefox,然而通常的WebSocket構造不可用在bootstrap.js(沙盒)或js代碼模塊,因爲這些不具有附接一個DOM窗口,但是是獨立的JS。

然而,有兩種方法,你仍然可以創建網絡套接字:

  1. 使用new Services.appShell.hiddenDOMWindow.WebSocket(...)。 (雖然,我記得有人在談論刪除Android上的隱藏窗口?!)
  2. 使用稍低級別的XPCOM組件nsIWebSocketChannel並實施nsIWebSocketListener

順便說一句,你可能想看看Remotely debugging Firefox for Android

+2

我認爲Fennec會榮幸'新的Services.wm.getMostRecentWindow('navigator:browser')。WebSocket'。 – paa

+0

@paa這也可以(現在),但你需要一些額外的圓括號來說明'getMostRecentWindow'不是構造函數,而是WebSocket,所以'new(Services.wm.getMostRecentWindow('navigator:browser' ).WebSocket)(...)' – nmaier

+0

@paa非常感謝你,這真的很有幫助,它爲我們節省了很多努力! –