美文网首页
在tornado中使用WebSocket

在tornado中使用WebSocket

作者: 锋之律 | 来源:发表于2018-11-08 16:15 被阅读0次

什么是WebSocket

WebSocket是一种网络通信协议,与Http协议不同的是,WebSocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。WebSocket 只需要建立一次连接,就可以一直保持连接状态。

如何在tornado中使用WebSocket(本文重点)

注意:WebSocket可以共用Http对端口的监听和路由的配置。

class MyWebSocketHandler(websocket.WebSocketHandler):

    # 保存连接的用户,用于后续推送消息
    connect_users = set()

    def open(self):
        print("WebSocket opened")
        # 打开连接时将用户保存到connect_users中
        self.connect_users.add(self)

    def on_message(self, message):
        print('收到的信息为:' + message)

    def on_close(self):
        print("WebSocket closed")
        # 关闭连接时将用户从connect_users中移除
        self.connect_users.remove(self)

    def check_origin(self, origin):
        # 此处用于跨域访问
        return True
    
    
    @classmethod
    def send_demand_updates(cls, message):
        # 使用@classmethod可以使类方法在调用的时候不用进行实例化
        # 给所有用户推送消息(此处可以根据需要,修改为给指定用户进行推送消息)
        for user in cls.connect_users:
            user.write_message(message)

调用以下方法来向已连接的客户端发送消息:

MyWebSocketHandler.send_demand_updates("hello")

相关文章

网友评论

      本文标题:在tornado中使用WebSocket

      本文链接:https://www.haomeiwen.com/subject/lrpwxqtx.html