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

标签 websocket

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

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

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

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

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

最佳答案

So, is it intended that a Websocket client should be able to close the connection

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

is it bad practice from the development point of view? And if a client can close a connection, what sort of scenarios might require this?

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

Can a client even tell if a message has completed?

收到消息时调用

WebSocket.onmessage。是否已收到整个消息实际上取决于应用程序的角度。如果您的服务器一次性发送完整消息,那么很可能会收到完整消息。您可以在 WebSocket protocol documentation 中找到确切的详细信息。

关于websocket - Websocket客户端是否有关闭连接的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19277640/

相关文章:

node.js - 游戏中node.js和socket.io的大滞后(实时)

java - 带有 Tomcat 的 JSR-356 WebSockets - 如何限制单个 IP 地址内的连接?

php - Laravel echo 不接收事件

xml - Spring : how to expose SimpMessagingTemplate bean to root context ?

python - Websocket与高速公路的连接和python中的twisted

c# - 响应中缺少 header 'Sec-WebSocket-Protocol'

spring - 如何在客户端获取 session ID? (WebSocket)

java - 用于保护 websocket 连接的证书

python - websocket._exceptions.WebSocketBadStatusException : Handshake status 404 NOT FOUND

javascript - 实时应用程序 : Socket. io 与 Pusherapp