Web套接字,长轮询,服务器发送事件和永久帧之间有什么区别?

时间:2013-10-07 13:55:07

标签: websocket signalr long-polling server-sent-events

我目前正在探索SignalR,这项技术支持传输(网络套接字,长轮询,服务器发送事件和永久帧)。

我已经理解术语网络套接字和长轮询。但什么是Server-Sent Events和Forever Frame?

四者如何相互不同?

1 个答案:

答案 0 :(得分:13)

SignalR的传输和后备:

WebSocket Full-duplex

Websocket是通过单个TCP连接的全双工通信通道。当服务器和浏览器都支持时,它是唯一一种在客户端和服务器之间建立真正持久的双向连接的传输。

服务器已发送事件 Simplex

也称为EventSource,是一种浏览器通过HTTP连接从服务器接收自动更新的技术。 W3C将Server-Sent Events EventSource API标准化为HTML5的一部分。

永远的框架 One request -> One infinite response

Forever Frame会创建一个隐藏的IFrame ,它会向服务器上的端点发出请求 。然后,服务器不断向客户端发送脚本,该脚本立即执行,提供从服务器到客户端的单向实时连接。从客户端到服务器的连接使用从服务器到客户端连接的单独连接,并且像标准HTTP请求一样,为每个需要发送的数据创建新连接。

Ajax长轮询 (One Request -> One Response [but delayed]) repeated

长轮询不会创建持久连接,而是使用请求轮询服务器,直到服务器响应,此时连接关闭,并立即请求新连接。这可能会在连接重置时引入一些延迟。

更多信息:

https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr https://en.wikipedia.org/wiki/Server-sent_events