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

Swap websocket connections when one of them was closed

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

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

重要提示:

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