1.即时通信介绍
- 即时通信是基于TCP长链接, 创建链接以后, 客户端/服务器能够无限次随时向对端发送数据, 实现服务器数据发送的即时性
- http是短链接, 设计的目的是减小服务器的压力
- http伪即时通信
- 轮训 emmet
- 长轮训 long pulling
- 使用场景
- 聊天功能
- 在线即时推送 以下单后当即推送给商户
- 实现即时通信
- 本身搭建服务器
- 选择支持的协议 websocket xmpp
- 使用一些比较成熟的框架 socketio xmppframework
- 本身封装socket
- 使用成熟的第三方方案
- 融云 环信
- 本身搭建服务器
2.websocket和socketio
- websocket和http都是基于tcp
- http创建的是短链接, 而websocket创建的是长链接
socket.io是基于websocket协议的一套成熟的解决方案python
- 优势
- 性能好
- 支持多平台
- 缺点
- 传输的数据并不彻底遵循websocket协议, 这就要求客户端和服务端都必须使用socket.io解决方案
- 安装
pip install python-socketio
3. 搭建socketio服务器 (重点)
搭建支持协程的socket服务器web
pip install python-socketio pip install eventlet # eventlet包提供了协程的支持
安装chrome插件firecamp 用于测试socketio请求chrome
事件处理 (重点)
- 事件: 相似于http中的路由
- 消息: 相似于http中的请求