1

Ich habe meine Socket io und Node Express js Server beide auf die gleichen Ports jetzt hören. Es wird in AWS ElasticBeanStalk gehostet. Es funktioniert gut. Jetzt wegen der Sicherheitsbeschränkungen, muss Socket IO auf anderen Port verschieben. Es ist ein Teil der gleichen Code-Basis wie der Knoten js App. Kann ich einen anderen Anschluss für die Buchse io hören? Funktioniert das? Welche Änderungen muss ich in ElasticBeanStalk machen? Irgendwelche neuen Ports müssen geöffnet werden oder gibt es irgendwelche Beschränkungen in dem Port?Wie expres js und socket io verschiedene Ports zu hören

+0

Welche Sicherheitseinschränkungen verursachen, dass Sie socket.io an einen anderen Port als Ihren Webserver verschieben müssen? Normalerweise Sicherheitseinschränkungen LIKE beide auf dem gleichen Port sein. Das ist der ganze Grund, warum websocket/socket.io einen Port mit einem HTTP-Server teilen sollte. – jfriend00

+0

Socket io wird nur für die Veröffentlichung von Ereignissen verwendet. Es muss also nicht in unserem Anwendungsfall gesichert werden. Unsere Knoten-App ist vollständig gesichert und benötigt ein Autorisierungs-Bearer-Token. Und der Port, auf dem der Knoten arbeitet, ist nur dem API-Manager zugänglich. So sollte der Socket IO in einem anderen Port sein, um API Manager zu umgehen – Jocket

+0

Sie können auf einen anderen Port für socket.io in Ihrer node.js App natürlich genau hören. Bei einer normalen socket.io-Verbindung (die Standardverbindung, die mit einigen Abfrageanforderungen beginnt) müssen Sie möglicherweise auch CORS aktivieren, wenn die Verbindung über einen Browser hergestellt wird, sodass der Browser die Verbindung zu einem anderen Anschluss erlaubt die Webseite. Oder Sie können den socket.io-Client ändern, um sofort mit webSocket zu starten, das nicht von CORS eingeschränkt wird. Ich kann nicht helfen, was AWS Änderungen benötigt, um einen neuen Port zu verwenden. – jfriend00

Antwort

0

Die docs geben Beispiele für die Verbindung über Express oder über Standardknoten HTTP. Technisch gesehen können Sie beide einfach miteinander verschmelzen und verschiedene Ports anhören.

var exApp = require('express')(); 
var exServer = require('http').Server(exApp); 

var ioApp = require('http').createServer(handler); 
var io = require('socket.io')(ioApp); 

exServer.listen(80); 
ioApp.listen(81); 

function handler (req, res) { 
    res.writeHead(200).end({}); 
} 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

// Then whatever you want to do with `io`, and `exApp`. 

Wenn Sie localhost:80 gehen, werden Sie die Express-App bekommen serviert, und wenn Sie Socket.io Anfragen an localhost:81 senden, sollte es die io.connection()

I auslösen haben dies technisch nicht getestet, Lass es mich wissen, wenn ich wild bin und ich werde weiter darüber nachdenken.

+0

Ich interessiere mich mehr für die Konfigurationsänderungen in Elasticbean Stiel und kann in der Nginx sein – Jocket