Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
Node.js 为nginx反向代理路径设置socket.io客户端“资源”(无WebSocket)_Node.js_Nginx_Socket.io - Fatal编程技术网

Node.js 为nginx反向代理路径设置socket.io客户端“资源”(无WebSocket)

Node.js 为nginx反向代理路径设置socket.io客户端“资源”(无WebSocket),node.js,nginx,socket.io,Node.js,Nginx,Socket.io,我有一个socket.io服务器,它只使用“xhr polling”传输,在配置了nginx的系统上的端口5000上运行,nginx将以“/api”开头的请求传递到该端口 在客户端的connect上,我将socket.io资源指定为“api/socket.io”,它似乎可以正确地将初始连接请求转发到服务器并触发连接事件。但是,使用socket.emit从服务器发送的响应不会到达客户端 如果我将客户端直接连接到端口5000,关闭“资源”选项,绕过nginx转发,一切似乎都正常 服务器: var i

我有一个socket.io服务器,它只使用“xhr polling”传输,在配置了nginx的系统上的端口5000上运行,nginx将以“/api”开头的请求传递到该端口

在客户端的connect上,我将socket.io资源指定为“api/socket.io”,它似乎可以正确地将初始连接请求转发到服务器并触发连接事件。但是,使用socket.emit从服务器发送的响应不会到达客户端

如果我将客户端直接连接到端口5000,关闭“资源”选项,绕过nginx转发,一切似乎都正常

服务器:

var io = require('socket.io').listen(5000, {transports: ['xhr-polling']});

io.sockets.on('connection', function (socket) {
   console.log('Connection spotted!');
   socket.emit('connected', 'hi');
});
客户不工作:

var socket = io.connect(window.location.hostname, {resource:'api/socket.io'});
socket.on('connected', function(data) {
    alert('Connected!!!');
});
var socket = io.connect(window.location.hostname, {port: 5000});
socket.on('connected', function(data) {
    alert('Connected!!!');
});
客户工作:

var socket = io.connect(window.location.hostname, {resource:'api/socket.io'});
socket.on('connected', function(data) {
    alert('Connected!!!');
});
var socket = io.connect(window.location.hostname, {port: 5000});
socket.on('connected', function(data) {
    alert('Connected!!!');
});
nginx:

location / {
    proxy_pass http://localhost:5000/;
}

在这两种情况下,我都看到了连接!在服务器上记录消息,但客户端在直接连接到端口时会获取数据和警报。

您是否能够解决此问题?我被困在类似的一个。这是我的问题,请您帮忙: