1

소켓 io를 사용하고 Node express js 서버는 모두 동일한 포트를 수신합니다. AWS ElasticBeanStalk에서 호스팅됩니다. 그 좋은 일. 보안 제한으로 인해 소켓 io를 다른 포트로 이동해야합니다. 노드 js app와 동일한 코드베이스의 일부입니다. 소켓 io에 대해 다른 포트를들을 수 있습니까? ElasticBeanStalk에서 변경해야 할 사항은 무엇입니까? 새로운 포트를 열어야합니까 아니면 포트에 제한이 있습니까?express js 및 socket io를 다른 포트로 수신하는 방법

+0

socket.io를 웹 서버의 다른 포트로 이동해야하는 보안상의 제한 사항은 무엇입니까? 일반적으로 둘 다 같은 포트에 있어야하는 보안 제한 사항. 이것이 websocket/socket.io가 http 서버와 포트를 공유하도록 설계된 모든 이유입니다. – jfriend00

+0

소켓 io는 이벤트 발행에 사용됩니다. 따라서 유스 케이스에서는 보안 될 필요가 없습니다. 우리 노드는 완전히 보안이되어 있고 무기명 토큰이 필요합니다. 그리고 노드가 작동중인 포트는 API 관리자에게만 노출됩니다. 따라서 소켓 io는 다른 포트에 있어야 API 관리자를 우회 할 수 있습니다. – Jocket

+0

동일한 node.js 앱의 socket.io에 대해 다른 포트에서 수신 대기 할 수 있습니다. 일반적인 socket.io 연결 (몇 가지 폴링 요청으로 시작하는 기본 연결)의 경우 브라우저에서 연결이 이루어지면 CORS를 활성화해야 브라우저에서 다른 포트에 연결할 수 있습니다 웹 페이지. 또는 CORS에 의해 제한되지 않는 webSocket으로 바로 시작하도록 socket.io 클라이언트를 변경할 수 있습니다. 새 포트를 사용하기 위해 AWS 변경이 필요할 것입니다. – jfriend00

답변

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