Изменение пути использования статического файла Socket.IO

Я использую Socket.IO на сервере Node с базовым HTTP-сервером (нет Express или Connect или что-то в этом роде). По умолчанию Socket.IO обслуживает файл клиента

/socket.io/socket.io.js

Я хотел бы иметь возможность изменить этот базовый путь на что-то еще, например

/foo/bar/socket.io/socket.io.js

Есть ли встроенный способ сделать это или каким-либо образом без изменения кода Socket.IO? Я думаю, что ответ лежит в модуле Static (require('socket.io').Static)), но я не могу написать свой собственный, чтобы заменить значение по умолчанию, я не вижу способа пойти и изменить способ поведения.

Как я могу это сделать?

Ответы

Ответ 1

Параметр resource позволяет вам настроить корневой каталог socket.io. По умолчанию он равен /socket.io.

var io = require('socket.io').listen(app, { resource: '/foo/bar/socket.io' });

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

var socket = io.connect('http://example.com', { resource: 'foo/bar/socket.io' });

(Обратите внимание, что по какой-то причине мы не используем ведущую косую черту.)

Ответ 2

Для версии socket.io 1.2.1 это работает для меня.

Серверная сторона:

var io = require('socket.io')({path: '/foo/bar'});

Клиентская сторона:

var socket = io.connect('http://example.com', {path: '/foo/bar'});

FYI: http://socket.io/docs/migrating-from-0-9/#configuration-differences

Ответ 3

Если вы используете socket.io версия 1.0, конфигурация отличается от предыдущей.

Для клиентской стороны:

var socket = io.connect('http://localhost:8888', { path: '/some/path/socket.io' });

Для серверной части

    var socket = require("socket.io")( { resource: '/some/path/socket.io' });

Ответ 4

Вы можете найти клиентскую сторону script socket.io.js в пути node_modules/socket.io/node_modules/socket.io-client/dist. Скопируйте его в новую папку и вызовите его с правильным путем из клиента

<script src="/your/path/to/socket.io.js"></script>

Для получения дополнительной конфигурации посетите wiki