Web sockets、长轮询、服务器推送事件和永久帧之间有什么区别?

18

我目前正在研究SignalR,这项技术支持多种传输方式(web sockets、long polling、server-sent events和forever frame)。

我已经了解了web sockets和long polling的术语。但是什么是Server-Sent Events和Forever Frame呢?

这四个传输方式有何不同?


所有传输类型的信息可以在“SignalR介绍”文档中找到,该文档位于http://www.asp.net/signalr/overview/getting-started/introduction-to-signalr。 - davidfowl
1个回答

25

SignalR的传输和回退:

WebSocket 全双工

WebSocket是一种可以通过单个TCP连接进行全双工通信的通道。当服务器和浏览器都支持时,它是唯一建立真正持久、双向连接的传输方式。

Server Sent Events 单向

也被称为EventSource,是一种技术,通过HTTP连接让浏览器从服务器接收自动更新。Server-Sent Events EventSource API已经作为HTML5的标准之一被W3C制定。

Forever Frame 一个请求 -> 一个无限响应

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

Ajax长轮询 (一个请求 -> 一个响应[但有延迟]) 重复

长轮询不会创建持久连接,但是使用一个请求保持打开状态直到服务器响应,然后关闭连接并立即请求新的连接。这可能会引入一些延迟,因为连接需要重置。

更多信息:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接