tornado之WebSocket
2018-02-12 12:16
141 查看
WebSocket
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocketAPI被W3C定为标准。 在WebSocket API中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。WebSocket是建立在 TCP 协议之上,与 HTTP 协议有着良好的兼容性。那么既然已经有了HTTP协议,为什么还需要一个WebSocket协议呢。这是因为HTTP只允许由客户端向服务端发送数据, 而无法直接由服务端主动向客户端推送信息。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端直接向客户端推送数据而不需要客户端进行请求,两者之间可以创建持久性的连接,并允许数据进行双向传送。WebSocket协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
1. Tornado的WebSocket模块
Tornado提供支持WebSocket的模块是tornado.websocket,其中提供了一个WebSocketHandler类用来处理通讯。WebSocketHandler.open()
当一个WebSocket连接建立后被调用。
WebSocketHandler.on_message(message)
当客户端发送消息message过来时被调用,注意此方法必须被重写。
WebSocketHandler.on_close()
当WebSocket连接关闭后被调用。
WebSocketHandler.write_message(message, binary=False)
向客户端发送消息messagea,message可以是字符串或字典(字典会被转为json字符串)。若binary为False,则message以utf8编码发送;二进制模式(binary=True)时,可发送任何字节码。
WebSocketHandler.close()
关闭WebSocket连接。
WebSocketHandler.check_origin(origin)
判断源origin,对于符合条件(返回判断结果为True)的请求源origin允许其连接,否则返回403。可以重写此方法来解决WebSocket的跨域请求(如始终return True)。
2. WebSocket使用示例
class WebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): self.application.cart.register(self.callback) def on_close(self): self.application.cart.unregister(self.callback) def on_message(self): pass def callback(self,count): self.write_message('{"count":"%s"}'%count)
相关文章推荐
- tornado的websocket处理
- 用tornado实现一个简单的websocket样例
- Tornado实现聊天室功能(websocket)
- tornado websocket 学习历程
- 一个tornado websocket 客户端例子
- nginx,tornado,websocket,supervisord配置成型
- 代码服务器端Tornado实现聊天室功能(websocket)
- tornado websocket简单教程
- tornado websocket实现二维码扫描
- Tornado长轮询和WebSocket
- tornado websocket
- tornado websocket编程 (2): 简单购物车改进
- tornado websocket
- tornado websocket调用时出现403错误
- tornado WebSocket详解
- tornado websocket 学习demo:简单聊天室
- Tornado websocket应用
- Tornado框架10-WebSocket
- [tornado]websocket 最简单demo
- [tornado]websocket 最简单demo