Подтвердить что ты не робот

Как отладить сервер websocket

Я пытаюсь написать сервер для подключения к сети. Я внимательно прочитал спецификацию (76, а не 75). Я использую минное поле в качестве браузера.

Когда я пытаюсь создать WebSocket из javascript в браузере:

var ws = new WebSocket("ws://localhost:8766/hoho");

Браузер отвечает

"Firefox не может установить соединение с сервером по адресу ws://localhost: 8766/hoho."

Мой сервер получает действительный запрос на подтверждение связи, он отправляет ответ, а затем стрелу.

Я запустил каждый пример рукопожатия, который я могу найти через свой сервер, и я сопоставляю данные ответы точно в каждом экземпляре. Я довольно уверен, что поток возвращаемого байта правильный. Мне не нужна помощь, отлаживающая мой код, он делает то, что я имею в виду. Мне нужна помощь, отлаживающая мое использование протокола рукопожатия, поскольку, когда я даю минное поле, я думаю, что это правильный ответ, он смеется надо мной.

Мой вопрос: как я могу отладить эту вещь? Я могу представить себе две возможности.

  • Есть ли способ получить минное поле, чтобы сказать мне, ПОЧЕМУ он отклоняет мое рукопожатие?

  • Есть ли в Интернете рабочая, общедоступная служба веб-сервера? Если есть, я могу проксировать его, наблюдать потоки байтов в обоих направлениях и выяснить, где мой отличается.

Есть ли у кого-нибудь идеи в этих направлениях или какие-либо другие идеи?

Спасибо за любую помощь.

4b9b3361

Ответ 2

Я в процессе отладки аналогичной ситуации, и инструмент, на который я опишу больше всего, - netcat, с некоторым дополнительным использованием openssl. Завершите работу сервера websocket и запустите nc -l 8766. Это позволяет вам точно записывать, какие заголовки отправляются. Верните сервер веб-сервера и используйте nc 8766, чтобы вставить те же заголовки и посмотреть результат. openssl s_client -connect localhost:443 позволит вам сделать запрос с помощью ssl, если это в вашем миксе.

Оттуда убедитесь, что ответы полностью соответствуют протоколу квитирования websocket. Например, моя проблема прямо сейчас заключается в том, что мои ответы имеют Connection: close, что нехорошо.

Ответ 3

Здесь jsfiddle, который я сделал из http://www.websocket.org echo websocket server, который работает в Chrome, но не в Firefox 6: http://jsfiddle.net/awDLc/

Он настроен на использование MozWebSocket, а не WebSocket, но, возможно, этого недостаточно?