轮询、长轮询、server-sent-event

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轮询、长轮询、server-sent-event相关的知识,希望对你有一定的参考价值。

参考技术A

客户端定时向服务器发送Ajax请求,服务器接到请求后无论是否有响应的数据,都马上返回响应信息并关闭连接。

优点:实现简单。

缺点:浪费带宽和服务器资源,新数据响应会有延迟。

应用:小应用小场景。

与简单轮询相似,只是在服务端在没有新的返回数据情况下不会立即响应,而会挂起,直到有数据或即将超时。

优点:实现也不复杂,同时相对轮询,节约带宽。

缺点:所以还是存在占用服务端资源的问题,虽然及时性比轮询要高,但是会在没有数据的时候在服务端挂起,所以会一直占用服务端资源,处理能力变少。

应用:一些早期的对及时性有一些要求的应用:web IM 聊天。

一个客户端获取新的数据通常需要发送一个请求到服务器,也就是向服务器请求的数据。使用 server-sent 事件,服务器可以在任何时刻向我们的客户端推送数据和信息。这些被推送进来的信息可以在这个客户端上作为 Events + data 的形式来处理。

EventSource 类

使用 EventSource 类接口来完成请求。

参考: https://developer.mozilla.org/en-US/docs/Web/API/EventSource

服务端需要做如下一些设置:

头信息

返回数据格式

https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events

以上是关于轮询、长轮询、server-sent-event的主要内容,如果未能解决你的问题,请参考以下文章

卡夫卡长轮询

长链接短连接长轮询短轮询

http 长连接,长轮询区别

Tornado-长轮询_webSocket

短连接长连接和短轮询长轮询

长连接与长轮询(转载)