WebSocket onmessage () не вызывается при отправке сообщений - PullRequest
0 голосов
/ 22 февраля 2012

Я использую автобан 0.4.10 (https://github.com/oberstet/Autobahn) в качестве сервера WebSocket для отправки сообщений на расширение Google Chrome. Я могу открывать и закрывать соединения, используя WebSocket(), но когда я вызываю autobahn.websocket.WebSocketServerProtocol.sendMessage() сообщениеПохоже, что отправлено, но не доставлено, пока соединение не будет закрыто.

API для WebSocketServerProtocol's sendMessage() (полученный из WebSocketProtocol) можно найти здесь: 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) появляются (из того, что я получил из заголовков и документов), чтобы использовать версию 13 чернового протокола WebSocket.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Автобан работает с 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 только случайно здесь

Раскрытие информации: я являюсь автором автобана и работаю в Tavendo.

0 голосов
/ 25 февраля 2012

Оказывается, это была проблема с многопоточностью, поскольку некоторые потоки блокировали витой реактор.

См: http://groups.google.com/group/autobahnws/browse_thread/thread/6bf0c43ec169efc3# http://twistedmatrix.com/documents/current/core/howto/threading.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...