Поменяйте местами соединения веб-сокетов, когда одно из них было закрыто - PullRequest
0 голосов
/ 23 октября 2018

Использование gorilla/websocket Я подключаюсь к некоторой конечной точке websocket (wss) и слушаю сообщения (только чтение, а не запись - это важно).Эта конечная точка всегда принудительно закрывает соединения через 10 минут.Обработка закрытия и повторного подключения может привести к потере некоторых входящих сообщений.Как обработать соединение в этом случае?

Я предлагаю сохранить пул соединений (2 соединения или более).Когда первое соединение закрывается, мы можем начать использовать другое (уже подключенное) соединение и начать подготовку нового соединения (или просто переподключить).Как вы думаете?Есть ли недостатки?«Поменять» соединения означает прекратить использовать один маршрут и переключиться на другой?Есть идеи?

Важно отметить:

  • Конечная точка просто передает сообщения на все соединения.Никаких персональных сообщений, никакой аутентификации, никакого состояния сеанса и т. Д.
  • Просто чтение, вообще нет записи.

1 Ответ

0 голосов
/ 24 октября 2018

Если сообщения имеют идентификаторы (они должны), вы можете прослушивать их в нескольких процедурах, которые при необходимости восстанавливаются.Подпрограммы могут пересылать сообщения через канал в подпрограмму фильтра, которая только пересылает уникальные сообщения, например, сохраняет карту, используя в качестве ключей видимые идентификаторы сообщений.Карту можно периодически удалять, чтобы не накапливать идентификаторы, которые слишком стары и больше не актуальны.

...