Вопрос

Я проводил сервер Websocket в LebEvent, и пока у меня нет проблем с Chrome или Firefox, с IE10 я даже не могу установить соединение.

Здесь рукопожатия:

IE10 Request:
GET /echo HTTP/1.1
Origin: 95.115.195.4
Sec-WebSocket-Key: rgPWUlUtk+h3CPWqk99OtA==
Connection: Upgrade
Upgrade: Websocket
Sec-WebSocket-Version: 8
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Host: 95.115.195.4:5555
Cache-Control: no-cache

Server Response:
HTTP/1.1 101 Switching Protocols
Upgrade: Websocket
Connection: Upgrade
Sec-WebSocket-Accept: jGmgQ/jOvew8MU9o3bbqPG9PHlY=
Sec-WebSocket-Protocol: chat
.

Отладчик IE10 говорит: Script12152: Ошибка WebSocket: Неверный HTTP-ответ.Код состояния 101

Кто-нибудь знает, что я делаю не так?

Спасибо

Это было полезно?

Решение

Клиент не отправил список подпротипоров, но ваш сервер отправил обратно «чат» в качестве значения подпротокола.Согласно Page 19 of IETF 6455 Websocket SPECTECTS (конец секции 4.1 Требования к клиентам):

6.  If the response includes a |Sec-WebSocket-Protocol| header field
   and this header field indicates the use of a subprotocol that was
   not present in the client's handshake (the server has indicated a
   subprotocol not requested by the client), the client MUST _Fail
   the WebSocket Connection_.
.

Сервер должен отправлять заголовок «SEC-Websocket-протокол: Subprotocol» обратно к клиенту, если клиент отправил «SEC-Websocket-протокол: Subprotocol, ...» заголовок на сервер.Обратите внимание, что клиент может отправлять список подпротипоров, и если он это будет, сервер должен выбрать один из списка для ответа.

Возможно, что Firefox и Chrome слишком снисходительны и не придерживаются текущей версии спецификации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top