У меня есть клиент/сервер веб-сокета, который отлично работает с Firefox и Chrome 18. Он не работает с бета-версией Chrome 19. Я подозреваю, что это связано с тем, что этот браузер теперь использует расширение фрейма deflate -, которое мой сервер не поддерживает.
Бета-версия Chrome 19 отправляет это в своем рукопожатии :«Sec -WebSocket -Extensions :x -webkit -deflate -кадр»
Мой сервер отправляет обратно :"Sec -WebSocket -Extensions :"
Но либо это неправильный способ отклонить расширение, либо есть что-то еще, чего я не улавливаю. Это единственное, что в рукопожатии отличается от того, что я вижу в работающих браузерах.
Редактировать :Вот дополнительная информация. Это рукопожатия, захваченные Wireshark.
Рукопожатие с использованием Firefox 12:
GET /chatserver HTTP/1.1
Хост:(опущен для этого поста)
Пользователь -Агент :Mozilla/5.0 (Windows NT 6.1; ВАУ64; rv :12.0 )Gecko/20100101 Firefox/12.0
Принять :text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Принять -Язык :en -us,en;q=0.5
Принять -Кодирование :gzip, deflate
ДНТ :1
Соединение :поддерживает -в рабочем состоянии,Обновление
Сек -WebSocket -Версия :13
Источник:(опущен для этого поста)
Секунда -WebSocket -Ключ :2TKm4ozUQdNP17Lobt7IBg==
Прагма :без кэша -
Кэш -Управление :нет -кеш
Обновление :websocket
HTTP/1.1 101 Протоколы переключения
Обновление :веб-сокет
Соединение :Обновление
Sec -WebSocket -Accept :pSUB3BT9YUUd9n3mOeWY/1uVqJE=
Рукопожатие с использованием Chrome 18:
GET /chatserver HTTP/1.1
Обновление :веб-сокет
Соединение :Обновление
Хост:(опущен для этого поста)
Источник:(опущен для этого поста)
Секунда -WebSocket -Ключ :zuHLEC8pGvAMadarhCLXFA==
Секунда -WebSocket -Версия :13
HTTP/1.1 101 Протоколы переключения
Обновить :веб-сокет
Соединение :Обновление
Sec -WebSocket -Accept :LMBSq6Bk9Kiv+zAbQlAL899pfzc=
Рукопожатие с использованием Chrome 19:
GET /chatserver HTTP/1.1
Обновление :веб-сокет
Соединение :Обновление
Хост:(опущен для этого поста)
Источник:(опущен для этого поста)
Секунда -WebSocket -Ключ :TbwnVcuUiqGgZn7hxvxzvQ==
Сек -WebSocket -Версия :13
Sec -WebSocket -Extensions :x -webkit -deflate -frame
HTTP/1.1 101 Switching Protocols
Обновление :веб-сокет
Соединение :Обновление
Сек -WebSocket -Принять :D45BJ+Vfydy1Upcs3Hze/nuiaS8=
Секунда -WebSocket -Расширения:
Все ответы сервера имеют окончания строки \r\n -и включают дополнительный \r\n в конце сообщения.
FF12 и Chrome18 работают--Chrome19 не работают . В Chrome19,самый следующий пакет после ответа сервера на рукопожатие — это FIN/ACK. Соединение закрыто.
прим. Я также пытался использовать дефис в качестве значения Sec -WebSocket -Extensions, но это тоже не сработало.