WebSocket - Tornado 的基本实现总结

本文总结了Tornado中WebSocket的一对一和一对多长连接的实现,探讨了tornado内置的ioloop定时调度,并介绍了两种脚本定时触发WS消息推送的方法:ioloop调度和HTTP请求触发。

目录

零、基本信息

一、一对一长连接

1-1 server 端

1-2 client 端

二、一对多长连接

三、tornado 内置定时调度

四、实现脚本定时调度触发ws的消息推送

方式一、ioloop调度脚本触发ws推送

方式二、服务端开启http 和 ws 的api,脚本向发送http请求触发ws的推送


零、基本信息

官方文档 - 中文

 

一、一对一长连接

一对一解释:由于只有在接收信息的时候触发服务端消息的发送,所以只实现了一对一的消息触发

1-1 server 端

from tornado import ioloop
from tornado.web import Application
from tornado.websocket import WebSocketHandler
​
​
class EchoWebSocket(WebSocketHandler):
    def open(self):
        print("WebSocket opened")
​
    # 处理client发送的数据
    def on_message(self, message):
        print(message)
        # 将数据发送给连接的client
        self.write_message(u"server said: " + message)
​
    def on_close(self):
        print("WebSocket closed")
​
    # 允许所有跨域通讯,解决403问题
    def check_origin(self, origin):
        return True
​
​
if __name__ == "__main__":
    application = Application([
        (r"/", EchoWebSocket),
    ])
    application.listen(8080)
    ioloop.IOLoop.current().start()

1-2 client 端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tornado Websocket</title>
</head>
<body>
<body onload='onLoad();'>
Message to send: <input type="text" id="msg"/>
<input type="button" onclick="sendMsg();" value="发送"/>
</body>
</body>
​
<script type="text/javascript">
    var ws;
​
    function onLoad() {
        ws = new WebSocket("ws://localhost:8080/");
        ws.onmessage = function (e) {
            // alert(e.data)
            console.log(e.data)
        }
    }
​
​
    function sendMsg() {
        ws.send(document.getElementById('msg').value);
    }
</script>
​
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值