2013-10-09 89 views
0

请原谅我的任何无知或术语故障。我为一家软件公司工作,但在支持,而不是发展。有没有Websocket客户端关闭连接的情况?

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

使用我测试过的简单Websocket服务器(ws://echo.websocket.org:80),我使用我们的工具将消息ping到服务器并接收回来。但是服务器并没有关闭连接,我们的工具只是一直在聆听,当我预料到它会停止时。

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

那么,Websocket客户端是否应该能够关闭连接,从开发的角度来看它是不好的做法?客户甚至可以告诉消息是否已完成?如果客户可以关闭连接,那么可能需要哪种情况?

回答

1

那么,是不是打算一个WebSocket的客户端应该能够关闭连接

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

从发展的角度看它是不好的做法吗? 如果客户端可以关闭连接,那么可能需要哪种情况?

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

客户甚至可以告诉消息是否已完成?

WebSocket.onmessage在收到消息时被调用。整个消息是否已经被接收,都取决于你的应用程序的观点。如果您的服务器一次性发送完整的消息,则很可能会收到完整的消息。你会发现在WebSocket protocol documentation

0

确切的细节取决于您的应用程序,但关闭websocket是正常运行(双方)。

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

技术的名称是webSOCKET,它的名称是有原因的。它是网络版的套接字。如果您使用常规的TCP/IP套接字,则发送槽(双向)取决于应用程序。如果应用程序是Web服务器和浏览器,则数据发送槽套接字根据HTTP协议进行格式化。该协议定义了连接/套接字应该如何以及何时关闭。

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

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

相关问题