2015-08-10 2 views
0

Я пытаюсь запустить скрипт чата, используя node.js и socket.io. Я последовал за the tutorial on the socket.io website и получил его для запуска на моем локальном сервере Windows http://localhost:3000 просто отлично.socket.io игнорирование URL-адреса, похоже, вызывает опрос GET 404 error

Теперь я передал проект на веб-сервер, где он будет использовать port 54321. Поскольку сервер работает под управлением веб-сервера Apache, мне нужно использовать .htaccess файл для перенаправления запросов на сервер Node.js:

RewriteEngine On 
RewriteRule ^chat/(.*) http://localhost:54321/$1 [P] 

Так что мой чат скрипт доступен на http://www.examle.com/chat/

Сайт будет открыт только отлично в браузере, все HTML есть. Однако функции socket.io не работают. Консоль (браузер, на стороне клиента) показывают следующие сообщения об ошибках:

GET http://www.example.com/socket.io/?EIO=3&transport=polling&t=1439208895332-0 404 File not found 

Я видел подобные вопросы здесь на SO, которые имеют тот же 404 проблемы. Ответы в основном касаются правильного порядка переменных в index.js сервера. Я пробовал эти решения, чтобы быть уверенными, но они не помогли. Поскольку сценарий работает на моем локальном сервере (без какого-либо подкаталога в URL-адресе), я думаю, что это может быть что-то другое. Любопытно, что скрипты socket.io на стороне клиента, похоже, игнорируют подкаталог /chat/ в запросе. Если я попытаюсь открыть URL-адрес из запроса GET вручную с помощью /chat/, он даст мне ответ!

http://www.example.com/chat/socket.io/?EIO=3&transport=polling&t=1439208895332-0 

Это сработает!

Но как я могу получить socket.io, чтобы на самом деле использовать правильный путь/url для своих запросов?

ответ

2

На клиенте, вы можете установить путь в качестве опции:

var socket = io('http://example.com', {path: '/chat/socket.io'}); 
+0

что (в основном) сделал трюк. Пришлось использовать 'io.connect()' вместо просто 'io()' хотя. Большое спасибо! – Konadi

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