Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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 socket.io连接错误-';会话ID未知';_Node.js_Amazon Web Services_Nginx_Socket.io_Amazon Elastic Beanstalk - Fatal编程技术网

Node.js socket.io连接错误-';会话ID未知';

Node.js socket.io连接错误-';会话ID未知';,node.js,amazon-web-services,nginx,socket.io,amazon-elastic-beanstalk,Node.js,Amazon Web Services,Nginx,Socket.io,Amazon Elastic Beanstalk,我有一个“弹性Beanstalk”环境,可扩展服务器运行2个Ec2实例 在我的根目录下,我使用PHPAPI(使用API文件夹中的Codeigniter)提供angular 7内容。我的节点文件夹中有socket.io聊天模块 我正在使用Nginx在单个EB环境中设置节点和PHP项目 根据一些研究,我通过修改我的Nginx.conf文件尝试了不同的选择,但无法解决问题 这里是我的Nginx.CONF为SOCKET.IO设置文件 server { listen 80; server_

我有一个“弹性Beanstalk”环境,可扩展服务器运行2个Ec2实例

在我的根目录下,我使用PHPAPI(使用API文件夹中的Codeigniter)提供angular 7内容。我的节点文件夹中有socket.io聊天模块

我正在使用Nginx在单个EB环境中设置节点和PHP项目

根据一些研究,我通过修改我的Nginx.conf文件尝试了不同的选择,但无法解决问题

这里是我的Nginx.CONFSOCKET.IO设置文件

server {
    listen 80;
    server_name sub.domain.com;
    root   /var/app/current/node;
    location / {
      proxy_pass            http://127.0.0.1:3000;
      proxy_read_timeout    3600;
      proxy_connect_timeout 3600;
      proxy_redirect        off;
      proxy_set_header  Upgrade $http_upgrade;
      proxy_set_header  Connection "upgrade";
      proxy_set_header      X-Real-IP $remote_addr;
      proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header      X-Forwarded-Proto https;
      proxy_set_header      X-Forwarded-Port 443;
      proxy_set_header      Host $host;
    }   
}
我的套接字.io代码

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = 3000;

var socketController = require('./socketController.js')

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});
var nsp = io.of('/namespace');
/**
 * Socket for chat message
 */
io.on('connection', function (socket) {
    socket.on('client_user_join', socketController.userJoin.bind(null, socket, nsp, io));
    socket.on('client_send_chat_message', socketController.sendChatMessage.bind(null, socket, nsp, io));
    socket.on('client_received_chat_message', socketController.receivedChatMessage.bind(null, socket, nsp, io));    
    socket.on('disconnect', socketController.disconnect.bind(null, socket));
});

http.listen(port, function () {
    console.log('listening on *:' + port);
});
我在初始控制杆上获得了
会话ID未知
,几分钟后我获得了失败:WebSocket握手时出错:意外响应代码:400

我的套接字连接链接

https://sub.domain.com/socket.io/?EIO=3&transport=polling&t=Mtzwcpj&sid=TSMAaNI0KxDuzcIEAA4s
我已经尝试了以下选项

尝试使用不同的传输连接套接字服务器。
this.socket=io('https://sub.domain.com/namespace“,{transports:['websocket']})

在AWS侧,启用粘性至1天


我不知道它是被Nginx配置阻塞的,还是我必须使用Radis来解决这个问题,因为我有两个EC2实例正在运行。

我使用的Nginx配置有
proxy\u http\u version 1.1@RolandStarke我也尝试过这个选项,但没有成功。它在本地有效吗<代码>var nsp=io.of('/namespace')似乎有点奇怪,因为您不使用该变量。但我想这只是针对这个问题。是的,它在本地工作,因为我在本地没有不同的服务器,也没有NginxDo非websocket请求工作,例如
app.get('/',
(因此访问
https://sub.domain.com/
提供
\uu dirname+'/index.html'
文件?)https是在其他地方处理的吗?我使用的nginx配置没有太多阅读,它有
proxy\u http\u version 1.1;
@RolandStarke我也尝试过这个选项,但没有成功。它在本地工作吗?
var nsp=io.of(“/namespace”);
似乎有点奇怪,因为你没有使用这个变量。但我想这只是为了这个问题。是的,它在本地工作,因为我在本地没有不同的服务器,也没有NginxDo非websocket请求工作,例如,
app.get(“/”,
(所以访问
https://sub.domain.com/
提供
\uu dirname+'/index.html'
文件?)https是在其他地方处理的吗?