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