소켓 io를 사용하고 Node express js 서버는 모두 동일한 포트를 수신합니다. AWS ElasticBeanStalk에서 호스팅됩니다. 그 좋은 일. 보안 제한으로 인해 소켓 io를 다른 포트로 이동해야합니다. 노드 js app와 동일한 코드베이스의 일부입니다. 소켓 io에 대해 다른 포트를들을 수 있습니까? ElasticBeanStalk에서 변경해야 할 사항은 무엇입니까? 새로운 포트를 열어야합니까 아니면 포트에 제한이 있습니까?express js 및 socket io를 다른 포트로 수신하는 방법
1
A
답변
0
docs은 표준 노드 HTTP를 통해 Express 또는을 통해 연결하는 예를 제공합니다. 그래서 기술적으로 당신은 둘을 하나로 모으고 다른 포트에서들을 수 있습니다.
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`.
당신이 localhost:80
에 가면 , 당신은 익스프레스 응용 프로그램이 제공거야, 당신은 localhost:81
에 socket.io 요청을 보낼 경우, 그것은 트리거해야 내가 기술적으로이 테스트를하지 않은 io.connection()
1, 그래서 내가 거칠게 벗어났다면 알려주고 그것에 대해 더 생각할 것입니다.
+0
나는 elasticbean 스토킹의 구성 변경에 더 많은 관심이 있으며 nginx에있을 수 있습니다. – Jocket
socket.io를 웹 서버의 다른 포트로 이동해야하는 보안상의 제한 사항은 무엇입니까? 일반적으로 둘 다 같은 포트에 있어야하는 보안 제한 사항. 이것이 websocket/socket.io가 http 서버와 포트를 공유하도록 설계된 모든 이유입니다. – jfriend00
소켓 io는 이벤트 발행에 사용됩니다. 따라서 유스 케이스에서는 보안 될 필요가 없습니다. 우리 노드는 완전히 보안이되어 있고 무기명 토큰이 필요합니다. 그리고 노드가 작동중인 포트는 API 관리자에게만 노출됩니다. 따라서 소켓 io는 다른 포트에 있어야 API 관리자를 우회 할 수 있습니다. – Jocket
동일한 node.js 앱의 socket.io에 대해 다른 포트에서 수신 대기 할 수 있습니다. 일반적인 socket.io 연결 (몇 가지 폴링 요청으로 시작하는 기본 연결)의 경우 브라우저에서 연결이 이루어지면 CORS를 활성화해야 브라우저에서 다른 포트에 연결할 수 있습니다 웹 페이지. 또는 CORS에 의해 제한되지 않는 webSocket으로 바로 시작하도록 socket.io 클라이언트를 변경할 수 있습니다. 새 포트를 사용하기 위해 AWS 변경이 필요할 것입니다. – jfriend00