Node.js, проблема с расположением WebSocket? - PullRequest
1 голос
/ 27 июня 2010

Я создал сервер, используя Node, прослушивающий порт 8000, localhost. Проверено, что он работает правильно, но я не могу получить доступ к WebSocket на клиенте (Chrome 5). Перепробовал несколько реализаций из различных репозиториев Git, node + websocket, socketIO, статей и т. Д. Ничего.

Нет конфликтов портов (sudo lsof -i tcp); Пробовал server.listen (8000, "*"); Указано на ws = new WebSocket ("ws: //: 8000 / test"); Debian Lenny, Apache22 Узел v0.1.98-31-g1c6671a

Я думаю, что может быть конфликт с перезаписью URL. Или возможные разрешения. Есть идеи?

1 Ответ

0 голосов
/ 10 августа 2010

У меня была похожая проблема в Ubuntu 10.04 LTS 32-bit и Chrome 5.0.375.125, и я обнаружил, что это ошибка в Chrome.Вот как вы можете проверить и обойти проблему.Я использовал WebSocket с PHP и позже Node.JS:

PHP: загрузите учебный файл из http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/ и извлеките его в папку «socket» в вашем webroot.Эта папка теперь содержит readme.txt и папки «server» и «client».Теперь запустите скрипт в консоли в соответствии с readme (для меня команда была: sudo php -q /var/www/socket/server/startDaemon.php).Должно быть напечатано «Начать слушать на Socket».,Оставьте окно консоли открытым.Теперь перейдите в localhost / socket / client / client.php в Chrome.На нем должно быть написано «Socket Status 0», и если вы посмотрите в консоли, вы не увидите новых сообщений (не было установлено соединение).

Теперь здесь есть хитрость: откройте вторую вкладку Chrome.Укажите на этой вкладке тот же URL-адрес: localhost / socket / client / client.php (там также указано «Socket Status 0»).А затем закройте его снова.На вашей исходной вкладке теперь должно быть написано «Socket Status: 1 (open)», и в консоли вы видите, что было произведено рукопожатие.WebSocket теперь работает.

Я повторил тот же трюк, что и выше, но на этот раз, используя Node.JS со скриптом Socket.IO.Пример чата, включенного в Socket.IO-узел (github.com/LearnBoost/Socket.IO-node), имел ту же проблему, зависая на этапе «Соединение ...».Открытие второй вкладки в окне чата, а затем ее закрытие решило проблему, и окно чата продолжило загружаться правильно.Сервер Node.JS подтвердил соединение в консоли.С тех пор WebSocket работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...