更改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/dist
find客户端脚本socket.io.js
。 将其复制到一个新的文件夹并从客户端以正确的path调用它
<script src="/your/path/to/socket.io.js"></script>
有关更多configuration,请访问wiki