Websockets / Tornado - 数据库更新时通知客户端
我正在尝试使用Tornado的网页套接字服务器,想要在数据库发生变化时实时通知用户。我希望能用HTML5的网页套接字来实现这个功能,尽管大多数浏览器对它的支持并不好。Tornado包里的示例都没有使用网页套接字,而且文档里也没有提到这方面的内容,所以我不知道该从哪里开始。我在谷歌上找到的几个例子,要么不管用,要么文档写得很糟糕。
有没有人能给我一些例子,教我如何用Tornado在MySQL数据库更新时把数据推送给客户端,或者其他类似的东西让我学习一下?
3 个回答
0
这篇文章使用了websockets和redis,对基本概念讲解得很清楚。
8
Lee的回答很好,如果你需要支持老旧的浏览器,可能需要用socket.io。
不过在tornado中使用Websockets非常简单:
import tornado.websocket
class EchoWebSocket(tornado.websocket.WebSocketHandler):
def open(self):
print "WebSocket opened"
def on_message(self, message):
self.write_message(u"You said: " + message)
def on_close(self):
print "WebSocket closed"
然后像处理其他请求一样来路由它,并在你的视图中加入Websocket的JavaScript代码:
var ws = new WebSocket("ws://localhost:8888/websocket");
ws.onopen = function() {
ws.send("Hello, world");
};
ws.onmessage = function (evt) {
alert(evt.data);
};
想了解更多信息,可以查看源代码:https://github.com/facebook/tornado/blob/master/tornado/websocket.py