是否有Websocket客户端关闭连接的情况?

时间:2013-10-09 16:30:28

标签: websocket

请原谅我这里的任何无知或术语失误。我在一家软件公司工作,但在支持,而不是开发。

我们开发了一个连接到websocket服务器以传递和接收消息的工具。为了接收消息,它打开一个连接并接收消息(将它们传递给其他组件以进行进一步处理),直到服务器关闭连接。

使用简单的Websocket服务器我对它进行了测试(ws://echo.websocket.org:80)我使用我们的工具将消息ping到服务器并接收回来。但是服务器没有关闭连接,我们的工具只是继续听,当我希望它停止时。

我向我们的开发团队建议我们可能要为客户端添加一个设置,以便在收到X消息后关闭连接,或者Y时间长度,但他们已经质疑这是否真实。

那么,是否打算让Websocket客户端能够关闭连接,从开发的角度来看,这是不好的做法?客户甚至可以判断消息是否已完成?如果客户端可以关闭连接,那么可能需要什么样的场景?

2 个答案:

答案 0 :(得分:1)

  

那么,Websocket客户端是否应该能够关闭连接

WebSocket API包含close功能。这是因为客户端可以关闭与服务器的连接。

  从发展的角度来看,这是不好的做法吗?   如果客户端可以关闭连接,那么可能需要什么样的场景?

这实际上取决于应用程序。但是 - 如上所述 - 它是WebSocket API的一部分,因此它完全有效。

  

客户是否可以判断消息是否已完成?

收到消息时会调用

WebSocket.onmessage。是否收到整个消息实际上取决于您的应用程序的观点。如果您的服务器一次性发送完整的消息,则很可能会收到完整的消息。您可以在WebSocket protocol documentation

中找到确切的详细信息

答案 1 :(得分:0)

取决于您的申请,但关闭websocket是正常操作(两侧)。

如果您收到了预期的所有数据,并且不想进一步沟通,请关闭连接。

技术的名称是webSOCKET,并且出于某种原因以这种方式命名。它是socket的web版本。如果您使用常规TCP / IP套接字,那么它(两个方向)发送的内容取决于应用程序。如果应用程序是Web服务器和浏览器,那么通过套接字发送的数据将根据HTTP协议进行格式化。该协议定义了应该如何以及何时关闭连接/套接字。

同样适用于websocket - 通过它发送的内容取决于客户端和服务器(以及它们之间通信方式的协议 - >被称为协议)。由于您拥有专有应用程序,因此协议取决于设计/编程的人员,包括。关闭/插座正常时的约定/规则 但是我必须说服务器如果正确编程应该能够随时处理连接丢失...因为在现实世界中它可能随时丢失,例如有人在传输过程中拔掉网线。

因此,即使不是最佳实践,您也应该能够随时关闭套接字,并且正确编程的服务器应该能够处理它。