Обнаружение сброса соединения веб-сокета (неправильное) за брандмауэром

Я сталкиваюсь с очень странной проблемой в fm.websync за подключением Cyberroam.

Эта библиотека подключается к веб-сокетам, а обработчик onRecieve этого канала получает сообщения с сервера.

В любой обычной сети соединение через веб-сокет (запрос HTTP101) остается постоянным, и я могу получать сообщения.

За брандмауэром код javascript достигает обработчика onSuccess подписки на канал, но сообщения не принимаются. Осматривая вкладку браузера Chrome, я замечаю, что запрос подключения веб-сокета перешел в завершенное состояние (вместо того, чтобы навсегда находиться в состоянии ожидания).

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

Единственное решение, о котором я могу подумать, это сохранить глобальный флаг и установить его в true в обработчике onRecieve. А также инициируйте функцию тайм-аута (2-3 с) перед подпиской на канал, чтобы проверить, является ли флаг истинным, иначе откат Я с нетерпением жду более аккуратного и независимого от времени подхода.

0 ответов

Другие вопросы по тегам