【问题标题】:Web sockets / Tornado - Notify client on database updateWeb 套接字 / Tornado - 在数据库更新时通知客户端
【发布时间】:2011-09-02 04:19:34
【问题描述】:

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

有没有人有任何示例说明我如何在 MySQL 数据库更新时使用 Tornado 将数据推送到客户端或我可以从中学习的类似东西?

【问题讨论】:

    标签: python tornado websocket


    【解决方案1】:

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

    【讨论】:

    • 链接失效了!
    【解决方案2】:

    我在服务器端使用socket.io 客户端和tornadio 取得了成功。 Socket.IO 提供对 websockets 的抽象,并在浏览器不支持 websockets 时提供回退(长轮询、flash socket 等)。

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

    【讨论】:

      【解决方案3】:

      A 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

      【讨论】:

        猜你喜欢
        • 2015-02-28
        • 1970-01-01
        • 2014-11-28
        • 2018-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多