解释SetWriteDeadline错误

时间:2018-05-23 17:16:44

标签: go websocket gorilla

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

我的问题是:如何解释SetWriteDeadline中的错误?特别是,我应该假设该特定客户端出现问题并取消注册吗?或者它是否是在此客户端上触发的服务器端问题?

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

1 个答案:

答案 0 :(得分:2)

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

Websocket连接具有底层网络连接。这些网络连接也彼此独立。

从SetWriteDeadline返回的错误表明该特定websocket连接或websocket连接的底层网络连接存在问题。

另请注意,Gorilla's SetWriteDeadline方法永远不会返回错误。