欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前后端消息推送方案汇总 WEB即时通讯/消息推送

程序员文章站 2022-06-25 14:14:28
...

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