Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket客户端是否需要关闭连接?_Websocket - Fatal编程技术网

Websocket客户端是否需要关闭连接?

Websocket客户端是否需要关闭连接?,websocket,Websocket,请原谅我在这里的任何无知或术语错误。我在一家软件公司工作,但从事的是支持,而不是开发 我们开发了一个连接到websocket服务器以传递和接收消息的工具。对于接收消息,它打开一个连接并接收消息(将消息传递给其他组件以进行进一步处理),直到服务器关闭连接 我使用简单的Websocket服务器(ws://echo.Websocket.org:80)对其进行了测试,我使用我们的工具将消息ping到服务器并接收回来。但是服务器没有关闭连接,我们的工具只是继续监听,而我本以为它会停止 我向我们的开发团队建

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

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

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

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

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

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

WebSocket
API包含一个
close
函数。这样,客户端就可以关闭与服务器的连接

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

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

客户机甚至可以判断消息是否已完成


当收到消息时,将调用
WebSocket.onmessage
。是否收到了整个消息实际上取决于应用程序的角度。如果您的服务器一次性发送完整消息,则很可能会收到完整消息。您将在

中找到具体细节,具体取决于您的应用程序,但关闭websocket是正常操作(在两侧)

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

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

websocket也是如此——通过websocket发送的内容取决于客户端和服务器(以及它们之间通信方式的协议->称为协议)。由于您拥有专有应用程序,协议由设计/编程的人决定,包括正常情况下关闭连接/套接字时的约定/规则。
然而,我必须说,如果编程正确,服务器应该能够在任何时候处理连接断开。。。因为在现实世界中,它可以随时下降,例如有人在传输过程中拔出网络电缆。 所以,即使不是最佳实践,您也应该能够随时关闭套接字,并且正确编程的服务器应该能够处理它