Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改Socket.IO静态文件服务路径_Javascript_Node.js_Socket.io - Fatal编程技术网

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

Javascript 更改Socket.IO静态文件服务路径,javascript,node.js,socket.io,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)),但除了编写自己的代

我在带有基本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)
),但除了编写自己的代码来替换默认值之外,我认为没有办法改变行为方式


如何执行此操作?

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

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

有关更多配置,请访问允许您配置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' });

(注意,出于某些原因,此处不使用前导斜杠。)

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

对于客户端:

var socket = io.connect('http://localhost:8888', { path: '/some/path/socket.io' });
var socket = io.connect('http://example.com', {path: '/foo/bar'});
对于服务器端

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

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

服务器端:

var io = require('socket.io')({path: '/foo/bar'});
客户端:

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

仅供参考:

这是唯一对我有用的东西。我把node.js文件放在与static.html页面完全不同的目录中。不是向下投票,但这样做是错误的。维护和升级(对于下一个家伙,或者未来的你)的难度增加了。对于任何认为这类事情是好主意的人来说,这是一个友好的BTW:这个概念适用于所有插件和扩展-只需坚持本机支持即可。现在的头痛会为以后节省很多。对于那些刚到这里的人来说,这适用于1.0之前的版本。关于1.0之后的内容,请参阅答案。我更改了此选项,现在我的控制台日志显示GET调用过多,我可能做错了什么吗??