发送消息时不调用WebSocket onmessage()

时间:2012-02-22 04:44:29

标签: javascript python google-chrome-extension

我正在使用autobahn 0.4.10(https://github.com/oberstet/Autobahn)作为WebSocket服务器向Google Chrome扩展程序发送消息。我可以使用WebSocket()打开和关闭连接,但是当我呼叫autobahn.websocket.WebSocketServerProtocol.sendMessage()时,消息似乎已发送但在连接关闭之前不会发送。

可以在此处找到WebSocketServerProtocol的sendMessage()(源自WebSocketProtocol)的api:http://www.tavendo.de/autobahn/doc/python/websocketprotocol.html#autobahn.websocket.WebSocketProtocol

之前有没有人遇到过这个问题?

我在客户端的代码是(js):

ws = new WebSocket('ws://localhost:4444');
ws.onmessage = function(event) {
  console.log('hii');
}

在服务器上(python)......

#json is a string object
def sendEvent(self, json):
    print 'to', self.peerstr
    self.sendMessage(json, sync=True)

Autobahn和我的Chrome版本(17.0.963.46)出现(来自我从标题和文档中得到的)以使用WebSocket草案协议的第13版。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

Autobahn可与Chrome配合使用(测试至v19 .. Canary)。

你可以试试

吗?

https://github.com/oberstet/Autobahn/blob/master/demo/broadcast/broadcast_server.py

演示,看看你是否有一般性问题?

如果运行,请将您的分机指向该演示服务器..它每秒会向您发送1个刻度。

您还可以通过将工厂代码行更改为此代码来启用调试输出

https://github.com/oberstet/Autobahn/blob/master/demo/echo/echo_server_with_logging.py#L50

另外2个笔记:

  • 你不需要sync = True选项(它实际上是一个高级选项......主要用于Autobahn WS测试套件)

  • 你可能想加入http://groups.google.com/group/autobahnws ..更快地得到答案..我在这里偶然发现你的Q

披露:我是Autobahn的作者并为Tavendo工作。