Web套接字/ Tornado - 在数据库更新时通知客户端

时间:2011-05-25 22:56:25

标签: python tornado websocket

我正在尝试使用Tornado Web套接字服务器在实时更改数据库时通知我的用户。我希望使用HTML5网络套接字,即使大多数浏览器不支持它们。 Tornado软件包附带的演示没有使用Web套接字,文档中没有提到它们,所以我不知道如何开始。我在谷歌上找到的几个例子要么不起作用,要么记录不清。

有没有人有任何关于如何在更新MySQL数据库时使用Tornado将数据推送到客户端的示例或我可以用来学习的类似内容?

3 个答案:

答案 0 :(得分:8)

Lee的答案很好,如果你需要支持旧的浏览器,你可能需要socket.io。

龙卷风中的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

答案 1 :(得分:6)

我在服务器端使用socket.io客户端和tornadio成功了。 Socket.IO提供了对websockets的抽象,并且如果浏览器不支持websockets(长轮询,闪存套接字等),则提供回退。

为了使用它,您只需要编写一个tornadio脚本,以及监控数据库的tornadio文档,然后在您的网页中包含socket.io JavaScript并让它与您的tornadio服务器所在的位置建立连接。您在tornadio脚本中指定的网址route

答案 2 :(得分:1)

使用websockets and redis的帖子很好地涵盖了基本想法。