1

Ich verwende eine socket.io-App "node.js" auf AWS Elastic Beanstalk. Ich habe express.js nicht aufgenommen.Hauptprobleme beim Konfigurieren von AWS Elastic Beanstalk Nginx für die Arbeit mit socket.io-Verbindungen

Offensichtlich Nginx Proxy auf Elastic Beanstalk übergibt keine TCP-Verbindungen ohne manuelle Konfiguration.

Ich versuche, über meinen Android-Client oder Browser eine Verbindung zu ihm herzustellen.

Ich habe buchstäblich jede Lösung im Internet versucht, aber ich bekomme entweder 502 Bad Gateway oder Timeout-Fehler.

Sollte ich den AWS Elastic Beanstalk Load Balancer ändern, um TCP nicht HTTP zu akzeptieren?

Meine node.js App überwacht Port 3000 (hartcodiert). Funktioniert großartig auf localhost.

var server = require('http').createServer(handleRequest); 
var io = require('socket.io')(server); 

function handleRequest(request, response) 
{ 
    response.end('It Works!! Path Hit: ' + request.url); 
} 

io.on('connection', function (socket) 
{ 
    console.log('a user connected'); 

    socket.on('disconnect', function() 
    { 
     console.log('user disconnected'); 
    }); 

    socket.on('chat message', function (msg) 
    { 
     console.log('message received on server: ' + msg); 

     io.emit('chat message', msg); 
    }); 
}); 

server.listen(3000, function() 
{ 
    console.log("Server listening on port:", 3000); //Callback triggered when server is successfully listening. Hurray! 
}); 

Hier ist meine package.json

{ 
    "name": "qurba-messaging-backend", 
    "version": "0.0.1", 
    "scripts": { 
    "start": "node main.js" 
    }, 
    "dependencies": { 
    "socket.io": "^1.4.6" 
    } 
} 

Hier meine nginx Konfigurationen https://gist.github.com/RobinBuschmann/c42a413ecedee463e5bd8e613ddd8d04

files: 
    "/etc/nginx/conf.d/01_websockets.conf": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     upstream nodejs { 
     ip_hash; 
     server 127.0.0.1:3000; 
     keepalive 256; 
     } 

     server { 
     listen 80; 

     location/{ 
      proxy_pass http://nodejs; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection "upgrade"; 
      proxy_http_version 1.1; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
     } 
    "/opt/elasticbeanstalk/hooks/appdeploy/enact/41_remove_eb_nginx_confg.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content : | 
     mv /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf.old 

Antwort

Verwandte Themen