在第二次连接之前,Tornado websockets在浏览器中没有收到消息

时间:2018-04-16 13:46:59

标签: javascript python websocket tornado

我希望使用PeriodicCallback增强Lightweight Django example发送一些定期更新,使用redis和tornado-redis,但现在没有Django(第一步)。

我写了一些代码(最小的例子,包括未使用的回调的ommited清理):

class MyHandler(WebSocketHandler):

    def check_origin(self, origin):
        return True

    def open(self, user):
        self.sprint = user
        self.uid = uuid.uuid4().hex
        self.application.add_subscriber(self.sprint, self)

    def on_message(self, message):
        c = PeriodicCallback(lambda: self.application.broadcast("test", channel=self.sprint, sender=self), 1000)
        c.start()

当我启动龙卷风应用时,请从开发者控制台连接:

(
function(){ ws = new WebSocket("ws://localhost:8080/1/");

    ws.addEventListener('open', function(e){ console.log('open', e);  
    ws.send('test'); });

    ws.addEventListener('message', function(e){console.log('msg', e.data)}); }
)();

第一次,它向服务器发送消息,服务器回答(至少它调用app.broadcast),但是我无法在浏览器中看到任何输出:它说套接字是打开的,当我定义onerror时它没有显示任何错误函数,当我定义onclose时,它没有显示套接字关闭。

当我再次在控制台中键入相同的功能时,浏览器开始接收消息。

0 个答案:

没有答案