Javascript HTML5 WebSockets协议是无损的吗?

Javascript HTML5 WebSockets协议是无损的吗?,javascript,html,websocket,Javascript,Html,Websocket,考虑到它使用TCP/IP,我猜是的,但我对规范(或其阅读)还不够精通,无法确定。顺便问一下,它是否也能确保它们以正确的顺序交付和阅读 这个问题源于我正在编写的HTML5游戏库中的一个需求,但我认为这与问题无关。由于WebSocket是基于TCP的,所以您发送的消息保证会被接收(或者会出现错误) 同一客户机通过相同(websocket)连接按顺序发送的消息按顺序接收(将其视为将所有内容写入文件,然后读取相同内容),但无法保证消息来自同一客户机建立的不同连接或不同客户机建立的连接的顺序,即使您知道消

考虑到它使用TCP/IP,我猜是的,但我对规范(或其阅读)还不够精通,无法确定。顺便问一下,它是否也能确保它们以正确的顺序交付和阅读


这个问题源于我正在编写的HTML5游戏库中的一个需求,但我认为这与问题无关。

由于WebSocket是基于TCP的,所以您发送的消息保证会被接收(或者会出现错误)

同一客户机通过相同(websocket)连接按顺序发送的消息按顺序接收(将其视为将所有内容写入文件,然后读取相同内容),但无法保证消息来自同一客户机建立的不同连接或不同客户机建立的连接的顺序,即使您知道消息的发送顺序

后一种场景中的常用方法是在每条消息中嵌入一个时间戳,以便可以在服务器上重建正确的时间序列


另外,如果您的服务器使用线程处理请求,那么即使按顺序接收,两条消息也可能会被无序处理(但这是另一种情况)。

由于WebSocket基于TCP,因此您发送的消息保证会被接收(否则会引发错误)

同一客户机通过相同(websocket)连接按顺序发送的消息按顺序接收(将其视为将所有内容写入文件,然后读取相同内容),但无法保证消息来自同一客户机建立的不同连接或不同客户机建立的连接的顺序,即使您知道消息的发送顺序

后一种场景中的常用方法是在每条消息中嵌入一个时间戳,以便可以在服务器上重建正确的时间序列


另一方面,如果您的服务器使用线程处理请求,那么即使按顺序接收,两条消息也可能被无序处理(但这是另一种情况)。

您所说的无损是什么意思?消息(数据包)保证被发送吗?@StefanoSanfilippo:是的。我不能保证TCP/IP数据包是完整发送的,但这只是我缺乏知识。对不起,没有具体说明。你说的无损是什么意思?消息(数据包)保证被发送吗?@StefanoSanfilippo:是的。我不能保证TCP/IP数据包是完整发送的,但这只是我缺乏知识。很抱歉,没有提供详细信息。感谢您完整、及时的回答。:)消息的顺序在一对WebSocket对等点之间得到保证。接收的对等方将获得一系列与发送的消息完全相同的WebSocket消息。@oberstet上面的脚注中已经说明了这一点。请告诉我,如果你认为它不够清楚,我会重新措辞这句话,至少,我认为它很容易被误解,因为WebSocket最常用的用法是一个WebSocket连接,单个WebSocket连接上的消息总是按顺序排列的(双向)。不需要时间戳。消息通过不同的WebSocket连接发送的场景非常罕见,每个消息都有一个新的WebSocket连接。然而,最后一句话并不适用于一般情况(你对请求是什么意思?)。WebSocket服务器的工作方式与HTTP服务器不同。即使是使用每连接一个线程策略的WebSocket服务器,也会按顺序在单个连接上处理WebSocket消息。我不知道有哪一个WebSocket服务器会将传入的WS消息调度到“无粘性”的线程池中。没什么意义。这与HTTP不同,在HTTP中,每个请求/响应交换在语义上已经是独立的,因此可以单独安排。感谢您提供完整而及时的回答。:)消息的顺序在一对WebSocket对等点之间得到保证。接收的对等方将获得一系列与发送的消息完全相同的WebSocket消息。@oberstet上面的脚注中已经说明了这一点。请告诉我,如果你认为它不够清楚,我会重新措辞这句话,至少,我认为它很容易被误解,因为WebSocket最常用的用法是一个WebSocket连接,单个WebSocket连接上的消息总是按顺序排列的(双向)。不需要时间戳。消息通过不同的WebSocket连接发送的场景非常罕见,每个消息都有一个新的WebSocket连接。然而,最后一句话并不适用于一般情况(你对请求是什么意思?)。WebSocket服务器的工作方式与HTTP服务器不同。即使是使用每连接一个线程策略的WebSocket服务器,也会按顺序在单个连接上处理WebSocket消息。我不知道有哪一个WebSocket服务器会将传入的WS消息调度到“无粘性”的线程池中。没什么意义。这与HTTP不同,HTTP中的每个请求/响应交换在语义上已经是独立的,因此可以独立地进行调度。。