очень специфическая, ненормальная проблема websocket node.js и html5 JS - PullRequest
0 голосов
/ 19 марта 2019

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

Я сталкиваюсь с этой периодически возникающей проблемой в Facebook-мессенджере для Android.

Я получаю ошибку 1006, но только когда-либо на некоторых устройствах Android и только в реальном приложении для обмена сообщениями Facebook для Android.

Сначала я подумал, что это сбой мессенджера Facebook. Однако этого не может быть, потому что подключение к echo.websocket.org работает каждый раз. (Я имею в виду, если я просто переключу свой "wss: // URL: порт" на "echo.websocket.org").

Дело в том, что ошибка websocket 1006 является специфической ошибкой клиента. Что делает это еще более запутанным и невозможным для отладки, так это то, что иногда это работает. Когда он работает, он обычно продолжает работать до суток. Часто это работает только в течение нескольких часов. Затем он внезапно перестает работать и снова показывает ошибку 1006.

Прежде чем сменить хост-провайдера, я хотел бы спросить кого-нибудь здесь. Очевидно, что для этого нужен человек, который действительно понимает, как именно работает протокол websocket.

Это то, что вам нужно знать;

  • 1: единственный раз, когда это не работает, это через мессенджер Facebook, и только на андроид устройстве. Это происходит больше на вкладке галактики, чем в галактика S серии 6 вверх.

  • 2: работает нормально в ios, mac и pc, все время.

  • 3: он работает на Android через веб-браузер каждый раз.

  • 4: я попытался перейти с websocket на socket.io, чтобы я мог запустить отладчик socket.io на моем сервере. Во время этой конкретной проблемы отладочный вывод не отображается.

  • 5: Когда я меняю соединение на echo.websocket.org, оно всегда работает.

  • 6: я подключаюсь, используя URL и порт. т.е. wss: //myUrl.com: номер порта.

  • 7: я попытался создать прокси для порта на моем сервере, чтобы я мог удалить номер порта и имитация "wss: //echo.websocket.org" (без номера порта) "wss: //myUrl.com".

  • 8: я связался с моим хостинг-провайдером, и они сказали, что там
    должно быть ничто, мешающее этому работать. «Поскольку он работает через ios, mac и pc, это должно быть проблемой мессенджера на Facebook»,

  • 9: иногда это работает, когда это работает, он работает на случайную количество времени.

  • 10: когда он работает, он никогда не сломается.

  • 11: прямая поддержка разработчиков мгновенных игр на Facebook в него, и они говорят: «Потому что echo.websocket.org работает, он должен быть проблема с вашим кодом ".

  • 12: я попробовал чистый ванильный скрипт веб-сокета и, хотя он сначала сработало, как у меня иногда работает игра работать через случайное количество времени. Когда он перестает работать, я снова получите ошибку 1006.

  • 13: Иногда очищаем кеш мессенджера и нажимаем принудительную остановку решает проблему за случайное количество времени. В другой раз это не делает.

  • 14: Нет возможности увидеть консоль разработчика в Facebook мессенджер, поэтому единственный вариант - использовать Eruda или vconsole. Ни один из они ловят ошибки websocket.

Так что это говорит о том, что это проблема с сервером. Правильно? Даже если ошибка 1006 говорит о специфической проблеме клиента?

Единственное, что я не пробовал - это менять хост-провайдеров. Но у меня достаточно мощный и дорогой VPS, поэтому смена хостов - это не просто то, что я хочу сделать, если это возможно.

Это явно то, что может ответить только очень опытный разработчик. Я просто надеюсь, что есть здесь?

Заранее спасибо.

...