Веб-приложение связывается со сторонним программным обеспечением на стороне сервера через веб-сокет в следующей настройке:
В целях тестирования я настроил следующую настройку на одной машине (которая в отношении моей проблемы, описанной ниже, ведет себя так же):
Обычная настройка работает до тех пор, пока начальное соединение выполняется с протоколом wss
, а не с ws
. В этом случае отправляется фиксированное количество кадров, затем стороннее программное обеспечение на стороне сервера отправляет некоторые кадры обратно, и «диалог» продолжается (как отображается средствами разработки Chrome).
При использовании ws
в любой настройке через веб-сокет отправляется только начальное фиксированное количество кадров, но ничего не возвращается.
Чтобы проанализировать проблему, я настроил в IIS трассировку невыполненных запросов для регистрации всего при каждом перезаписи URL. Один заметный аспект, который я могу распознать в журналах, состоит в том, что второй журнал перезаписи URL (тот, что ближе к стороннему серверу), кажется, показывает мне, как ответ отправляется обратно (начиная со строки типа WEBSOCKET_WRITE_FRAGMENT_START
), тогда как при В этой точке первый журнал перезаписи URL указывает на ошибку ввода-вывода («Операция ввода-вывода была прервана из-за выхода из потока или запроса приложения (0x800703e3)»).
Почему ответ через веб-сокет не проходит?
Некоторые дополнительные примечания:
- У меня нет понимания связи через веб-сокет. Модуль в веб-приложении, использующий веб-сокет, представляет собой черный ящик, предоставленный той же третьей стороной, что и сервер.
- Все брандмауэры, настройки которых я могу просмотреть на задействованных машинах, отключены.