Javascript 套接字IO客户端未在Nginx服务器上发送/接收除连接和断开连接以外的任何事件

Javascript 套接字IO客户端未在Nginx服务器上发送/接收除连接和断开连接以外的任何事件,javascript,node.js,nginx,socket.io,Javascript,Node.js,Nginx,Socket.io,首先,所有这些都在本地进行 我正在使用在我的react/redux应用程序前端启用socket.io。但是,我无法在生产中发出/接收任何事件 初始连接事件工作正常,我在服务器的日志文件中看到“已连接” 我已启用套接字调试,并在浏览器的控制台中看到以下消息=>socket.io客户端:套接字传输已打开-连接+0ms 在本地,所有事件都进行得很好,但一旦我们进入生产阶段,通信就会中断 本地站点和生产站点之间的唯一区别是,您可以在/sub dir/where上访问应用程序,因为本地开发发生在:{POR

首先,所有这些都在本地进行

我正在使用在我的react/redux应用程序前端启用socket.io。但是,我无法在生产中发出/接收任何事件

初始连接事件工作正常,我在服务器的日志文件中看到“已连接”

我已启用套接字调试,并在浏览器的控制台中看到以下消息=>
socket.io客户端:套接字传输已打开-连接+0ms

在本地,所有事件都进行得很好,但一旦我们进入生产阶段,通信就会中断

本地站点和生产站点之间的唯一区别是,您可以在/sub dir/where上访问应用程序,因为本地开发发生在:{PORT}/

我已经在网络上到处实施了可能的修复,但我还没能让它起作用

任何帮助都将不胜感激。如果你需要更多信息,请告诉我

My nginx具有以下设置文件:

    location /sub-dir/socket.io {
            # rewrite ^/sub-dir/socket.io(/.*)$ $1 break;
            # rewrite ^/sub-dir/socket.io(/.*)$ $1 break;
            proxy_pass http://localhost:3344;

            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }

    location /sub-dir/ {
            rewrite ^/sub-dir(/.*)$ $1 break;
            proxy_pass http://localhost:3344;

            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }
app.js(我的前端入口点)

Server.js

// setting up server
var express = require('express');
var app = express();            // initialising express() to app
var server = require('http').createServer(app);

var io = require('socket.io')(server, {path: '/admin-boards/'});  // io object with server as arg
var port = 3344;

var secrets = require('./secrets.json');

server.listen(port, function() {
  console.log('listening to ' + port + ' <<<');
});

var redis = require('redis').createClient;
var redisAdapter = require('socket.io-redis');

var pub = redis(secrets.redis.port, secrets.redis.host, { auth_pass: secrets.redis.pass });
var sub = redis(secrets.redis.port, secrets.redis.host, { auth_pass: secrets.redis.pass });

io.adapter(redisAdapter({ pubClient: pub, subClient: sub }));

// directing app to use files in __dirname
app.use(express.static(__dirname + '/../dist/'));

app.get('/', function(req, res) {});

var mysql = require('mysql');
var connection = mysql.createPool(secrets.db);

// connection of client
io.on('connection', function(socket){
  socket.on('Connected', function() {
        console.log("Connected Message Received");
        socket.emit('Welcome', { message: 'yo' });
  });
  socket.join('admin-room');
  var clients = io.sockets.adapter.rooms['admin-room'].sockets;
  console.log(clients);
  console.log('connected');

  // client disconnected
  socket.on('disconnect', function(){ // reseving 'event' and doing function
        console.log('... user disconnected');
  });

});
//设置服务器
var express=需要(“express”);
var app=express();//将express()初始化为应用程序
var server=require('http')。createServer(应用程序);
var io=require('socket.io')(服务器,{path:'/admin boards/'});//服务器为arg的io对象
var端口=3344;
var secrets=require('./secrets.json');
侦听(端口,函数(){

console.log('如果可能的话,您可能应该尝试直接与node.js服务器对话,而不是通过Nginx。@jcaron我不确定这会是什么样子?您找到解决方案了吗?
// setting up server
var express = require('express');
var app = express();            // initialising express() to app
var server = require('http').createServer(app);

var io = require('socket.io')(server, {path: '/admin-boards/'});  // io object with server as arg
var port = 3344;

var secrets = require('./secrets.json');

server.listen(port, function() {
  console.log('listening to ' + port + ' <<<');
});

var redis = require('redis').createClient;
var redisAdapter = require('socket.io-redis');

var pub = redis(secrets.redis.port, secrets.redis.host, { auth_pass: secrets.redis.pass });
var sub = redis(secrets.redis.port, secrets.redis.host, { auth_pass: secrets.redis.pass });

io.adapter(redisAdapter({ pubClient: pub, subClient: sub }));

// directing app to use files in __dirname
app.use(express.static(__dirname + '/../dist/'));

app.get('/', function(req, res) {});

var mysql = require('mysql');
var connection = mysql.createPool(secrets.db);

// connection of client
io.on('connection', function(socket){
  socket.on('Connected', function() {
        console.log("Connected Message Received");
        socket.emit('Welcome', { message: 'yo' });
  });
  socket.join('admin-room');
  var clients = io.sockets.adapter.rooms['admin-room'].sockets;
  console.log(clients);
  console.log('connected');

  // client disconnected
  socket.on('disconnect', function(){ // reseving 'event' and doing function
        console.log('... user disconnected');
  });

});