2012-03-05 2 views
3

Я установил узел на моем сервере Windows с помощью пакета .msi, который можно загрузить на веб-сайте nodejs.org, и он работает нормально. Затем я побежал npm install socket.io, и это тоже здорово. Он установил socket.io в C:\node_modules\socket.io. Я добавил примерный код сервера, найденный на веб-сайте socket.io, в новый файл с именем app.js. Единственное изменение, которое я сделал, это номер порта до 1337. Затем я начал узел с app.js следующим образом: node app.js в командной строке и получил сообщение info: socket.io started.Не удается получить базовый пример socket.io для работы с клиентом

На клиентском компьютере - мой ноутбук OSX, где я разрабатываю свое веб-приложение. Я не уверен, как правильно получить файл socket.io.js и все его зависимости, поэтому я могу включить его в тег <script> моей HTML-страницы. На странице How do I serve the client часто задаваемых вопросов на socket.io Wiki:

Клиент обслуживается автоматически сервером Node.JS. В теге вашего HTML, включают в себя:

<script src="http://<uri:port>/socket.io/socket.io.js"></script> 

Итак, я добавил это к моей странице index.html:

<script src="http://my.windows.server.domain.com:1337/socket.io/socket.io.js"></script> 

Когда я загрузить файл index.html на мой веб-сервер, и укажите мой браузер, я проверил консоль и нашел:

XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1330983853883. Origin http://my.web.server.domain.com is not allowed by Access-Control-Allow-Origin.` 

Неужели кто-нибудь столкнулся с этим сообщением с socket.io? Любые советы о том, как я могу заставить клиента включить код, который вам нужен, чтобы я мог начать использовать удивительность, что socket.io?

ответ

1

Это потому, что обычно XHR не может быть междоменным (и начальное «рукопожатие» проходит через XHR, прежде чем поднимать до протокола socket.io). Вы что-то сделали с настройками по умолчанию socket.io? Попробуйте добавить это:

io.set("origins","*"); 

в настройках сервера socket.io. Если это не работает, возможно, вы используете старую версию socket.io? Я думаю, что 0.9 является текущим.

+0

Нет, не касался настроек сервера socket.io по умолчанию. Однако, из примера кода для index.html на веб-сайте socket.io, он имеет следующую строку: 'var socket = io.connect ('localhost');', поэтому я понял, что мой сервер socket.io не тот же как предполагает мой веб-сервер. Я изменил 'io.connect ('localhost');' to 'io.connect ('http://my.windows.server.domain.com:1337');' и теперь он работает. – ariestav

+0

О, я предположил, что вы ввели правильный домен в 'io.connect()'. :) Я рад, что это работает для вас сейчас. Удачи вам в NodeJS и socket.io! – freakish

Смежные вопросы