WebSocket закрывается в Internet Explorer - код ошибки 1006

Моя реализация WebSocket корректно работает в Chrome и Firefox.

В IE11 я получаю эту ошибку:

Ошибка Websocket: сетевая ошибка 12152, сервер вернул неверный или нераспознанный ответ

Я использую класс js WebSocket и reactPhp и https://github.com/ratchetphp/RFC6455 для серверной части.

Это данные запроса-ответа в IE. Это выглядит нормально для меня. введите здесь описание изображения

Я проверил, что Websocket возвращает код 1006 и пустую причину.

Как я могу исправить ошибку IE11?


Проблема заключалась в том, что в заголовках ответов я должен возвращать только один протокол в Sec-WebSocket-Protocols.

Почему это не работает только под IE - потому что я разделяю протоколы в бэкенде запятой+пробелом, но IE возвращает протоколы без пробела только с разделителем-запятой. Другие браузеры возвращают протоколы с запятой+пробелом.

Например, код прямо в бэкенде выглядит так:

array_map('обрезать', взорвать(',', $this->headers['Sec-WebSocket-Protocol']));


person Anton_Sh    schedule 21.11.2016    source источник


Ответы (1)


Проблема заключалась в том, что в заголовках ответов я должен возвращать только один протокол в Sec-WebSocket-Protocols.

Почему это не работает только под IE - потому что я разделяю протоколы в бэкенде запятой+пробелом, но IE возвращает протоколы без пробела только с разделителем-запятой. Другие браузеры возвращают протоколы с запятой+пробелом.

Например, код прямо в бэкенде выглядит так:

array_map('trim', explode(',', $this->headers['Sec-WebSocket-Protocol']));
person Anton_Sh    schedule 24.11.2016