参考文档:https://tornado-zh.readthedocs.io/zh/latest/websocket.html
一、一个简单的 WebSocket handler 的实例: 服务端直接返回所有收到的消息给客户端
1、chat.py文件的编写内容
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")
2、配置路由信息
handlers=[(r'/ws', chat.EchoWebSocket)]
3、在浏览器中输入以下内容
(1)首先在浏览器的控制台输入以下代码,建立初始化连接
w = new WebSocket('ws://127.0.0.1:8080/ws')#输入,必须是ws协议
WebSocket {url: "ws://127.0.0.1:8080/ws", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null, …}#输出
注意:此时会在pycharm中输出open方法中的内容。
(2)客户端向服务端发送相应的消息,在浏览器的控制台上进行相应的操作
w.send('你好!!')
输出内容(向上箭头表示客户端向服务端发送相应的消息,向下则反)
(3)关闭WebSocket通信
1、直接关闭访问的界面。
2、w.close()
二、WebSocket 关键方法
1、tornado的WebSocketHandler(继承并重写了父类方法)
- open 客户端连接成功时,自动调用
- on_message 客户端连发送消息时,自动调用
- on_close 客户端关闭连接时,自动调用
重写 on_message
来处理收到的消息, 使用 write_message
来发送消息到客户端. 你也可以重写 open
和 on_close
来处理连接打开和关闭这两个动作.
2、浏览器客户端的相应方法
- w = new WebSocket(url) #初始化WebSocket对象
- w.onmessage 接受服务端发来的信息(具体的可以参考文档)
- w.send() 发信息给服务端
- 其他 w.onopen, w.onerror