Обработка плохих сетевых клиентов с помощью socket.io - PullRequest
0 голосов
/ 22 февраля 2019

В настоящее время я работаю над MMO-игрой, в которую игроки могут присоединиться и выйти из игры, когда захотят.У меня есть сервер диспетчера соединений (CMS), написанный на golang с использованием библиотеки сокетов io.Мир подключается к CMS, а клиенты подключаются к CMS и общаются с клиентами обновлений мира и мира с помощью снимков состояния игры.Для тестирования я написал клиента, который подключается к CMS и выступает в роли игрока для тестирования того, сколько клиентов может обрабатывать моя CMS.У меня около 80 клиентов на одно ядро ​​vcpu и 1 гигабайт оперативной памяти, и это приемлемо для моей игры и ресурсов.Я выпустил игру, но в реальной жизни, когда в игре около 5-6 настоящих игроков и один игрок с плохим сетевым подключением присоединяется к игре, это в значительной степени влияет на опыт других игроков.Пакеты не получают другим клиентам или сильно задерживаются!Я полагаю, это потому, что сокет io использует tcp, и когда плохой сетевой клиент присоединяется, он должен отправлять сообщения много раз, чтобы клиент получил его полностью.Как мне это преодолеть?Я знаю, что должен использовать udp для своей игры, но уже слишком поздно, и я выпустил свою игру в магазине игр, и она получила около 700 установок.Могу ли я в любом случае поставить время, чтобы жить, как атрибут сообщений, которые, если клиент не получил их в определенное время, отбросили их?Любая идея будет полезна.Tnx.

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