更改Socket.IO静态文件服务path

我正在一个基本的HTTP服务器(没有expression或连接或类似的东西)的节点服务器上使用Socket.IO。 默认情况下,Socket.IO服务于客户端文件

/socket.io/socket.io.js

我希望能够改变这个基地的path,像其他的东西

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

有没有任何内置的方式来做到这一点,或者没有改变Socket.IO的代码的任何方式? 我认为答案在于Static模块( require('socket.io').Static) ),但是我自己编写代替默认的缺点,我没有办法去改变行为方式。

我怎样才能做到这一点?

resource选项允许你configurationsocket.io的根目录。 它默认为/socket.io

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

请注意,此设置还会影响socket.io的terminal服务来源,因此您还必须在客户端代码中更改此设置

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

(请注意,由于某些原因,我们不使用前导斜杠。)

对于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

如果您使用的是socket.io 版本1.0 ,则configuration与以前的版本不同。

对于客户端:

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

对于服务器端

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

您可以在pathnode_modules/socket.io/node_modules/socket.io-client/distfind客户端脚本socket.io.js 。 将其复制到一个新的文件夹并从客户端以正确的path调用它

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

有关更多configuration,请访问wiki