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中的請求