Я нахожусь в процессе создания игры .io с использованием socket.io и express. Я использовал этот учебник , чтобы настроить свой сервер и обрабатывать соединения сервер-сокет. После некоторого тестирования я обнаружил, что иногда сокеты будут подключаться, а затем отключаться очень быстро, а иногда и многократно, что заставляет мой сервер инициализировать и удалять много игроков и возвышать кадр, делая его медленнее (это было собрано за очень короткое время, и очень неэффективно сам по себе). Мне пришлось использовать самый плохой из всех возможных подходов - заставить сокет выдавать сообщение «готово» через 5 секунд после его запуска. Это позволяет генерировать экранную страницу «подключение к серверу» для клиента, что мне очень нравится. Кажется, это работает для меня, но я уверен, что это не будет работать для всех и может привести к той же проблеме. Я попытался использовать socket.on('connect')
и document.onload
, а также изменить pingTimeout и pingInterval, но они по-прежнему имеют тот же эффект. Я приложил изображение моего терминального сеанса, где я открыл только 3 вкладки, и журнал консоли запускается всякий раз, когда кто-то подключается или отключается.
Код можно найти здесь: https://github.com/Hello-World25/DFG.io
Здесь можно сыграть в последнюю версию игры: https://dfg-io.herokuapp.com/
Должен ли я использовать async await
здесь? Я не нашел никаких других случаев этого онлайн, поэтому я очень смущен. Что я должен добавить, чтобы предотвратить это, сообщая пользователю, что он находится в процессе подключения к серверу?