Python+Tornado实现Websocket(附封装好的demo及前端调试脚本)

2 篇文章 0 订阅
1 篇文章 0 订阅

本文写的是基于Python+Tornado实现Websocket的demo,直接复制下来就可使用。
缺包的话,直接pip安装即可。

# -*- coding: utf-8 -*-
"""
tornado websocket
author: cjh
"""
import json
from tornado.ioloop import IOLoop
from tornado.web import Application
from tornado.websocket import WebSocketHandler


class WebsocketBase(WebSocketHandler):
	"""继承WebSocketHandler基类,重写所需实例方法"""
    def on_message(self, message):
        """接收消息"""

    def data_received(self, chunk):
        """接收消息"""

    def open(self):
        """新的websocket连接后被调动"""
        print 'new_connect', self

    def on_close(self):
        """websocket连接关闭后被调用"""
        print 'lost_connect', self

    def check_origin(self, origin):
        """重写同源检查 解决跨域问题"""
        return True


class RealData(WebsocketBase):
    """实时数据"""
    def on_message(self, args):
  		"""args 是请求参数"""
  		# TODO 实际的业务操作,只需在此处写自己的业务逻辑即可。
        self.write_message('啦啦啦')		# 向客户端返回数据,如果是字典、列表这些数据类型,需要json.dumps()  


class WebSocketApplication(Application):
    def __init__(self):
        handlers = [
            (r'/real_data', RealData),        # websocket路由
        ]
        Application.__init__(self, handlers)


def run():
    app = WebSocketApplication()
    app.listen(port=4053, address='0.0.0.0')
    IOLoop.current().start()


if __name__ == "__main__":
    run()

自己本地起了websocket服务后,该如可测试呢?下面附一个简单的前端小脚本,复制下来存为html文件,直接浏览器打开,F12后即可自己调试啦。

<html>
   <head>
      <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
      <script type="text/javascript">
         window.onload = function() {
            var ws = new WebSocket("ws://127.0.0.1:4053");
			ws.onopen = function() {
			  console.log("client:打开连接");
			  ws.send("{'unit_id':'38', 'db_code': 'sx'}");
			};
			ws.onmessage = function(e) {
			  console.log("client:接收到服务端的消息 " + e.data);
			  setTimeout(() => {
				/*ws.close(); */
			  }, 5000);
			};
			ws.onclose = function(params) {
				console.log("client:关闭连接");
			};
         }
      </script>
   </head>
   <body>
      <h1>Ping output:</h1>
      <pre id="output">

      </pre>
   </body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈建华呦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值