我在具有基本HTTP服务器的节点服务器上使用Socket.IO(没有Express或Connect或类似的东西)。默认情况下,Socket.IO将客户端文件提供给
/socket.io/socket.io.js
我希望能够将该基本路径更改为其他内容,例如
/foo/bar/socket.io/socket.io.js
有没有内置的方法来做到这一点,或者没有改变Socket.IO的代码?我认为答案在于Static
模块(require('socket.io').Static)
),但是如果没有编写我自己的模块来替换默认值,我认为无法改变行为方式。
我该怎么做?
答案 0 :(得分:23)
resource
option允许您配置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' });
(注意我们出于某种原因不使用前导斜杠。)
答案 1 :(得分:13)
对于socket.io版本 1.2.1 ,这对我有用。
服务器端:
var io = require('socket.io')({path: '/foo/bar'});
客户方:
var socket = io.connect('http://example.com', {path: '/foo/bar'});
仅供参考:http://socket.io/docs/migrating-from-0-9/#configuration-differences
答案 2 :(得分:9)
如果您使用的是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' });
答案 3 :(得分:2)
您可以在路径socket.io.js
中找到客户端脚本node_modules/socket.io/node_modules/socket.io-client/dist
。将其复制到新文件夹并使用来自客户端的正确路径调用它
<script src="/your/path/to/socket.io.js"></script>
有关更多配置,请访问wiki