【问题标题】:Swap websocket connections when one of them was closed当其中一个关闭时交换 websocket 连接
【发布时间】:2018-10-24 05:00:38
【问题描述】:

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

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

重要提示:

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

【问题讨论】:

    标签: go websocket gorilla


    【解决方案1】:

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

    【讨论】:

    • 嘿,谢谢!是的,以类似的方式解决。消息具有 event_id。但我没有做任何类型的过滤消息,因为底层存储只是将它们合并到唯一键上。谢谢哟!
    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 2021-10-30
    • 2019-01-17
    • 2019-10-22
    • 2012-08-08
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多