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