更改Socket.IO静态文件服务路径

时间:2012-10-10 17:00:48

标签: javascript node.js socket.io

我在具有基本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)),但是如果没有编写我自己的模块来替换默认值,我认为无法改变行为方式。

我该怎么做?

4 个答案:

答案 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