Моя реализация 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']));