我正在使用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版。
答案 0 :(得分:0)
事实证明这是一个线程问题,有些线程阻塞了扭曲的反应堆。
请参阅: http://groups.google.com/group/autobahnws/browse_thread/thread/6bf0c43ec169efc3# http://twistedmatrix.com/documents/current/core/howto/threading.html
答案 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工作。