Изменение пути использования статического файла 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