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

Ale*_*pin 16 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的代码?我认为答案在于Staticmodule(require('socket.io').Static)),但是如果没有编写我自己的替换默认值,我认为无法改变行为方式.

我怎样才能做到这一点?

jos*_*736 23

resource选项允许您配置socket.io的根目录.它默认为/socket.io.

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

请注意,此设置还会影响socket.io的端点的提供位置,因此您还必须在客户端代码中更改此设置.

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

(注意我们出于某种原因不使用前导斜杠.)

  • 对于刚到这里的人来说,这是1.0之前的版本.对于1.0之后,请参阅[this](http://stackoverflow.com/a/25438603/400654)答案. (3认同)

Lin*_*ink 14

对于socket.io版本1.2.1,这对我有用.

服务器端:

var io = require('socket.io')({path: '/foo/bar'});
Run Code Online (Sandbox Code Playgroud)

客户端:

var socket = io.connect('http://example.com', {path: '/foo/bar'});
Run Code Online (Sandbox Code Playgroud)

仅供参考:http://socket.io/docs/migrating-from-0-9/#configuration-differences


小智 9

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

对于客户方:

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

对于服务器端

    var socket = require("socket.io")( { resource: '/some/path/socket.io' });
Run Code Online (Sandbox Code Playgroud)