Как получить файл 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.