go - SetWriteDeadline 错误解读

标签 go websocket gorilla

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

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

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

最佳答案

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

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

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

另请注意 Gorilla's SetWriteDeadline方法从不返回错误。

关于go - SetWriteDeadline 错误解读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50494034/

相关文章:

go - TLS session 恢复

javascript - 弹性 : Error #2048 when connecting to a WebSocket

无法查看recv返回的特定字符

go - 使用变量时, gorilla mux为静态文件设置了错误的路径

go - 在gcp cloud函数中使用gorillamux

Golang Websocket 自定义 JSON 消息

map - golang map 比较 : partial match

json - 如何在 golang 中将 spanner 行提取为 Json 或 Parquet 格式?

arrays - 捕获数组索引错误

java - Spring Security 开启时无法创建 WebSocket 连接