SetWriteDeadline 错误解读

Interpretation of SetWriteDeadline error

我正在用 Go 编写一个 websocket 服务器,用于向客户端广播消息。我在每次发送时都使用 SetWriteDeadline,这样广播循环就不会卡住。

我的问题是:如何解释 SetWriteDeadline 的错误?特别是,我是否应该假设该特定客户端有问题并取消注册?还是服务器端问题恰好在此客户端上触发?

研究了SetWriteDeadline后,我发现deadline是为了将消息放到TCP栈服务器端,而不是客户端接收消息。所以也许更好的表达我的问题的方式是:每个 websocket 客户端是否有一个单独的 TCP 堆栈(也许这是具有大小 WriteBufferSize 的东西),或者这个缓冲区是否在客户端之间共享?在前一种情况下,我似乎应该在出现 SetWriteDeadline 错误时注销客户端,但在后一种情况下则不然。

Websocket 连接独立于其他 websocket 连接。

Websocket 连接具有底层网络连接。这些网络连接也是相互独立的。

从 SetWriteDeadline 返回的错误表示该特定 websocket 连接或 websocket 连接的基础网络连接有问题。

另请注意,Gorilla's SetWriteDeadline 方法永远不会 returns 出错。