Распределённая система: как разрешить единственное подключение пользователя?

Игра работает на нескольких одинаковых серверах бэкенд. Пользователь подключается по WebSocket через Load Balancer на один из них.

Как отключить предыдущие сеансы пользователя при новом его подключении?

Предыдущий может быть на другом бэке, чем обрабатывающий новый коннект. Центральной базы нет, все узлы одинаковы. Обмениваются только в конце игры итогами. У каждого Бэка есть список всех бэков и своё место в нём.

Мысль пока только добавить команду-ответ: при новом соединении опрашивать остальные бэки: «пришёл {userid=XXX, timestamp=YYY, back=ZZ}, если у вас есть такой, более давнего подключения, отключайте».

Какие ещё есть варианты без центрального/общего хранилища?
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Делать при новом подключении новый хеш (токен сессии) юзеру. Он перезапишет старый и все другие сессии станут автоматически невалидными.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы