Обнаружение сброса соединения веб-сокета (неправильное) за брандмауэром
Я сталкиваюсь с очень странной проблемой в fm.websync за подключением Cyberroam.
Эта библиотека подключается к веб-сокетам, а обработчик onRecieve этого канала получает сообщения с сервера.
В любой обычной сети соединение через веб-сокет (запрос HTTP101) остается постоянным, и я могу получать сообщения.
За брандмауэром код javascript достигает обработчика onSuccess подписки на канал, но сообщения не принимаются. Осматривая вкладку браузера Chrome, я замечаю, что запрос подключения веб-сокета перешел в завершенное состояние (вместо того, чтобы навсегда находиться в состоянии ожидания).
Я понимаю, что это какая-то проблема с брандмауэром, и этот вопрос решает ее, но мне было интересно, есть ли какой-либо подход к программному определению этого состояния. В основном, чтобы переключиться на HTTP-опрос, если websocket не работает должным образом.
Единственное решение, о котором я могу подумать, это сохранить глобальный флаг и установить его в true в обработчике onRecieve. А также инициируйте функцию тайм-аута (2-3 с) перед подпиской на канал, чтобы проверить, является ли флаг истинным, иначе откат Я с нетерпением жду более аккуратного и независимого от времени подхода.