我在理解websocket通信方面有一些问题。 AFAIU,在客户端,它的工作原理如下:
所以从客户的角度来看它很清楚。 但是从服务器的角度来看,流程是如何进行的(如上面的客户端)以及websocket服务器进程究竟意味着什么,以及我们在TCP上进行通信的时间到底是什么时候我们如何检查(如果问题是,我的aplologies)非常基本的)
请有人解释一下。 先谢谢
答案 0 :(得分:5)
在服务器端,它实际上取决于websockets库的实现,语言和API,或者您自己使用的实现。
此描述仅适用于WebSockets的RAW实现,并不基于使用任何库来使用WebSockets协议。 诸如jWebSockets(Java),SignalR,socket.io等库将拥有与WebSockets一起使用的绝对另一个进程。
如果我们谈论原始套接字上的原始实现,那么过程就是这样:
客户端永远不会收到部分数据或无序数据。它将始终按您发送的顺序接收数据包,并始终按您发送的顺序接收数据包 服务器可能部分地基于低级TCP层进程接收数据。但总会收到订单。
此协议可靠且有序。
最流行的WebSockets协议规范RFC 6455,请记住,iOS使用其他规范,它们可能不是交叉兼容的,这意味着您需要专门为不同的协议实现创建另一个握手功能和数据框架。
答案 1 :(得分:0)
握手完成后,您可以接收和发送消息。消息 是基于WebSockets协议的数据帧(非原始)。和WebSockets 是基于MESSAGE的协议。所以你必须确保你阅读具体的内容 在进行逻辑处理数据之前的消息数据量。
这里有一些更多的信息:
因此,服务器可以将多个WebSocket帧中的消息分段,然后发送给客户端。