Можно ли реализовать асинхронный сервер сокетов, но получать сообщения по команде - PullRequest
0 голосов
/ 16 апреля 2020

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

У меня вопрос, могу ли я сделать это с синхронным сервером или я должен использовать асинхронный (в этом случае я не знаю, как попросить каждого клиента ответить в данный момент)

1 Ответ

0 голосов
/ 16 апреля 2020

Я бы посоветовал вместо того, чтобы основывать свои сеансы на соединениях с сокетами, когда ваши клиенты подключаются, им назначается раунд и назначается токен сеанса. Если раунд продолжается, клиенты будут назначены на следующий раунд и не будут взаимодействовать, пока не получат сообщение о том, что следующий раунд начался. Делая это, вы можете управлять взаимодействием со стороны сервера, и если клиент теряет связь, он может повторно подключиться и повторно передать токен сеанса, который он уже должен продолжить в своем сеансе. Вы можете получить тайм-аут этих токенов сессии и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...