我有一个代理运行只能点击我的node.js服务器以获取/mysubdir
的路径
如何为这种情况配置socket.io?
在我的客户端代码中,我尝试了:
var socket = io.connect('http://www.example.com/mysubdir');
但后来我注意到底层的socket.io(或engine.io)http请求正在点击
http://www.example.com/socket.io/?EIO=3&transport=polling&t=1410972713498-72`
我希望他们点击
http://www.example.com/mysubdir/socket.io.....
我是否需要在客户端和服务器上配置?
答案 0 :(得分:16)
在我的服务器中我必须
var io = require('socket.io')(httpServer, {path: '/mysubdir/socket.io'})`
在我的客户中,我不得不
<script src="http://www.example.com/mysubdir/socket.io/socket.io.js"></script>
以及
var socket = io.connect('http://www.example.com', {path: "/mysubdir/socket.io"});`
答案 1 :(得分:2)
在我的情况下,我使用nginx作为反向代理。轮询时我收到404错误。这是我的解决方案。
节点服务器的网址是https://example.com/subdir/
在app.js中,我用
实例化了io服务器var io = require('socket.io')(http, {path: '/subdir/socket.io'});
在我使用的html中
socket = io.connect('https://example.com/subdir/', {
path: "/subdir"
});
干杯,
路加。
答案 2 :(得分:1)
@Drew-LeSueur的答案对于socket.io&gt; = 1.0来说是正确的。
当我使用socket.io 0.9时,我在文档中找到了the old way of doing it。
// in 0.9
var socket = io.connect('localhost:3000', {
'resource': 'path/to/socket.io';
});
// in 1.0
var socket = io.connect('localhost:3000', {
'path': '/path/to/socket.io';
});
请注意,/
显示为新path
选项中的第一个字符。
答案 3 :(得分:0)
使用nginx,此解决方案无需更改socket.io服务器应用中的任何内容:
在nginx conf中:
location /mysubdir {
rewrite ^/mysubdir/(.*) /socket.io/$1 break;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.1.1:3000;
}
在服务器中:
var io = require('socket.io')(3000)
在客户端中:
var socket = io.connect('https://example.com/', {
path: "/mysubdir"
})