Сокеты C #: будет ли длительное ожидание Socket.BeginReceive вызывать проблемы с масштабированием? - PullRequest
0 голосов
/ 17 октября 2019

Я создаю игру Unity, которая опирается на сервер, созданный с использованием c # и сокетов. Однако есть проблема.

В Socket.io (NodeJS) вы можете устанавливать события на любой стороне соединения и вызывать ваш обратный вызов, как только это событие инициируется, .NET не предоставляет такой механизм,Вместо этого мне придется BeginReceive на стороне сервера, и всякий раз, когда клиент (игра в единство) отправляет данные, он обрабатывается обратным вызовом, который я предоставил BeginReceive.

Но Я считаю эту модель действительноотносительно

  • Что, если пользователь оставит игру открытой, не взаимодействуя без нее, что заставит Нить, который обрабатывает BeginReceive (в основном ожидает получения данных от клиента), ждатьв течение очень долгого времени, или даже совсем закроют игру.

  • Самое главное, что если сервер захочет отправить некоторые данные пользователю, пока он ждет данных от него (BeginReceive ждет)? Могу ли я одновременно вызывать BeginSend и BeginReceive на одном и том же сокете?

Как добиться такой функциональности?

Не стесняйтесь использовать псевдокод дляобъясните, чтобы не тратить много времени на написание кода.

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