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

Sun*_*ian 10 long-polling websocket server-sent-events signalr

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

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

四者如何相互不同?

Mat*_*ier 17

SignalR的运输和后备:

的WebSocket Full-duplex

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

服务器已发送事件 Simplex

也称为EventSource是一种浏览器通过HTTP连接从服务器接收自动更新的技术.服务器发送事件EventSource API由W3C标准化为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