2014-06-16 208 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非常感谢你,这真的很有帮助,它为我们节省了很多努力! –