我希望使用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时,它没有显示套接字关闭。
当我再次在控制台中键入相同的功能时,浏览器开始接收消息。