Как получить файл socket.io для подкаталога
У меня есть прокси-сервер, который только удаляет мой node.js-сервер для путей, которые находятся с /mysubdir
Как мне настроить socket.io для этой ситуации?
В моем клиентском коде я попытался:
var socket = io.connect('http://www.example.com/mysubdir');
но затем я замечаю, что основные HTTP-запросы socket.io(или engine.io) попадают
http://www.example.com/socket.io/?EIO=3&transport=polling&t=1410972713498-72`
Я хочу, чтобы они нажали
http://www.example.com/mysubdir/socket.io.....
Есть ли что-то, что мне нужно настроить на клиенте и на сервере?
Ответы
Ответ 1
На моем сервере мне пришлось
var io = require('socket.io')(httpServer, {path: '/mysubdir/socket.io'})`
В моем клиенте мне пришлось
<script src="http://www.example.com/mysubdir/socket.io/socket.io.js"></script>
а также
var socket = io.connect('http://www.example.com', {path: "/mysubdir/socket.io"});`
Ответ 2
В моем случае я использую nginx в качестве обратного прокси. При опросе я получал 404 ошибки. Это решение для меня.
URL-адрес сервера node https://example.com/subdir/
В app.js я создал сервер io с помощью
var io = require('socket.io')(http, {path: '/subdir/socket.io'});
В html я использовал
socket = io.connect('https://example.com/subdir/', {
path: "/subdir"
});
Cheers,
Люк.
Ответ 3
Ответ @Drew-LeSueur верен для socket.io >= 1.0.
Поскольку я использовал socket.io 0.9, я нашел старый способ сделать это в документе.
// in 0.9
var socket = io.connect('localhost:3000', {
'resource': 'path/to/socket.io';
});
// in 1.0
var socket = io.connect('localhost:3000', {
'path': '/path/to/socket.io';
});
Обратите внимание, что a /
появляется в качестве первого символа в новой опции path
.