前后端消息推送方案汇总 WEB即时通讯/消息推送
a
SSE(Server-Sent Events)技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,再向服务端发送请求,周而复始。
WebSocket 技术是双工模式
WEB即时通讯/消息推送:11年之前4种。11年后有WebSocket。
模拟推送:1. 轮询(Polling)
Comet:
2.长轮询(Long-Polling) ,超时时间:微博2.8分分钟,微信网页版25秒、用两个请求来完成长轮询,一个用于25秒超时获取是否有新消息,当有新消息时会用另一个AJAX请求来获取具体数据;
3. 基于iframe的方式,如Google Talk。缺点:IE、Morzilla Firefox 下端进度栏显示加载中。
局限性方式 4. 插件提供的Socket方式。缺点:浏览器端需要装相应的插件;
5. WebSocket ,WebSocket API也被W3C定为标准。简单好用。
实现WebSocket 可用第三方框架:Socket.IO以及其Server端的Java实现netty-socketio 。(也支持长轮训)
Socket.IO中的一些重要概念。
1、Server:代表一个服务端服务器;
2、Namespace:一个Server中可以包含多个Namespace。见名知意,Namespace代表一个个独立的空间。
3、Socket/Client:基本上这两个词是一个概念。
1.在JavaScript客户端叫Socket,在创建时必须确定加入哪个Namespace,使用Socket可以让你和服务器通信。注意这个和伯克利Socket是不同的,只是开发者借用了一样的名字、功能相似。
2.在Java服务端用Client来表示连接上服务器的链接,它就代表了JavaScript连接时创建的那个Socket。
4、room:在服务端,一个Namespace中你可以创建任意个房间,房间就是给Client进行分组,以进行组范围的通信。Client可以选择加入某个房间,也可以不加入。
其他:
Connection:keep-alive 表示持久连接,做的是连接复用的工作,避免资源浪费,并不是解决全双工通讯、推送的。
z
上一篇: 网络基础常见笔试题
下一篇: 你到底该选择无反相机还是单反相机