22

我在带有基本 HTTP 服务器(没有 Express 或 Connect 或类似的东西)的节点服务器上使用 Socket.IO。默认情况下,Socket.IO 将客户端文件提供给

/socket.io/socket.io.js

我希望能够将该基本路径更改为其他内容,例如

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

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

我怎样才能做到这一点?

4

4 回答 4

27

resource选项允许您配置 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' });

(请注意,出于某种原因,我们在这里不使用前导斜杠。)

于 2012-10-15T21:27:21.223 回答
18

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

于 2014-12-30T08:29:33.103 回答
11

如果您使用的是 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' });
于 2014-08-22T02:08:51.187 回答
2

socket.io.js您可以在路径中找到客户端脚本node_modules/socket.io/node_modules/socket.io-client/dist。将其复制到新文件夹并使用客户端的正确路径调用它

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

更多配置请访问wiki

于 2012-10-10T18:09:29.937 回答