客户端与服务端主要是HTTP通信,现要添加消息推送功能,方案选择主要有3种:客户端轮询,服务器推,WebSocket,Socket
- 轮询实现简单,但资源消耗过大,不适用于当前项目
- 服务器推更适用于传统WEB
- 由于我们的开发环境和发布环境对WebSocket支持不一致,故优先采用Socket实现
第一版
基本实现为服务端与客户端再建立一层TCP连接,常规请求走HTTP协议,推送行为走TCP协议,用户身份在服务端维护
第二版
然后部署结构发生了变化,服务器部署采用nginx集群,意味着TCP连接由以前的多对一变成了多对多,维护起来就比较麻烦,所以对原有的结构做了些调整:将Socket从服务器分离出来,做为服务器和客户端之间的媒介
如图,客户端访问服务端依然使用HTTP,服务端推送消息则通过Socket服务器做中转,身份证在数据库端维护