当其中之一关闭时交换websocket连接

时间:2018-10-23 14:46:57

标签: go websocket gorilla

我使用gorilla/websocket正在连接到某个Websocket(wss)端点并监听消息(仅阅读而不是写作-这很重要)。此端点始终在10分钟后强制关闭连接。处理连接关闭并重新连接可能会导致一些传入消息丢失。在这种情况下如何处理连接?

我的建议是保留连接池(2个或更多连接)。当第一个连接关闭时,我们可以开始使用另一个(已连接)连接并开始准备新连接(或只是重新连接)。你怎么看?有什么缺点吗? “交换”连接意味着停止使用一种切换,而是切换到另一种切换?有什么想法吗?

重要注意事项:

  • 端点只是向所有连接广播消息。没有个性化消息,没有身份验证,没有会话特定的状态等。
  • 只看书,一点都不写。

1 个答案:

答案 0 :(得分:1)

如果消息具有ID(它们应该有ID),则您可以在多个goroutine上侦听它们,并在需要时重新连接。 goroutine可以通过通道将消息转发到过滤器goroutine,后者仅转发唯一消息,例如使用看到的消息ID作为键来保存地图。可以定期修剪该地图,这样它就不会累积太旧且不再相关的ID。