2014-07-24 2 views
1

루프에 사람이 없으며 두 종점 모두 독립 서비스로 작동하는 자율 Node.js 응용 프로그램입니다.WebSocket을 통한 원격 자율 Node.js 응용 프로그램 간의 전이중 메시징?

엔드 포인트 A는 보안 웹 소켓을 통해 엔드 포인트 B에 연결하고 해당 연결을 24 시간 365 일 동안 유지해야합니다.

두 엔드 포인트는 사람이 개입하지 않아도 독립적으로 메시지를 시작하며 두 엔드 포인트는 메시지 수신 및 처리를위한 API (RESTful 또는 기타)를 갖습니다. 각 엔드 포인트가 다른 엔드 포인트의 클라이언트이고 다른 엔드 포인트의 서버라고 말할 수 있습니다.

Sails.js 및 LoopBack (양쪽 끝점에서 구현)과 같은 프레임 워크를 고려하고 있으며 JSON 메시지를 단순히 ws로 전달하지만 가장 관용적 인 접근 방법은 무엇인지 명확하지 않습니다.

+0

게시/하위 기능을 찾으십니까? ActiveMQ/RabbitMQ 또는 심지어 Redis와 같은 것으로 충분할 수 있습니까? 메시징 큐를 사용하면 서버를 수평 적으로 확장 할 수 있습니다. –

+0

엔드 포인트 A는 이미 다른 유스 케이스에 대해 메시지 대기열을 사용합니다. 그러나이 경우 연결은 '하트 비트 (heartbeat)'로 작동하기 때문에 웹 소켓이 필요합니다. - "예, 여기 있습니다" 시각. 또한 통신은 양 종점간에 완전히 양방향입니다. – Chris

답변

0

웹 소켓은 HTTP와의 호환성을 유지하려고하기 때문에 브라우저 연결에 많은 오버 헤드가 있고 그렇지 않은 항목은 없습니다. 한 쌍의 서버에 연결하는 중이면 간단한 TCP 연결만으로 충분합니다. 이 경우 net module을 사용할 수 있습니다.

이제 연결이 완료되면 어떻게 의사 소통을 시작합니까? 자신의 프로토콜을 만드는 데 어려움을 겪을 수는 있지만 권장하지는 않습니다. 나는 간단한 RPC가 가장 쉬운 것을 발견했다. 모든 양방향 스트림 (TCP 소켓 포함)에서 rpc-stream package을 사용할 수 있습니다.

내 응용 프로그램의 경우 실제로 socket.io-client를 설치하고 내 서버에서 RPC 용으로 사용하게합니다. 비록 내가 다시해야한다면, 나는 웹 소켓 연결을 설정하는데 필요한 모든 오버 헤드를 건너 뛰기 위해 rpc-stream을 사용할 것이다.

+0

안녕하세요. Brad. 나는 그 반응에 감사한다. 좋은 생각이지만 HTTPS 만 사용할 수있는 옵션이기 때문에 WebSockets이 필요합니다. 두 개의 끝점 사이에 여러 개의 방화벽이 있으므로 셀 수있는 유일한 포트는 80과 443이고 보안상의 이유로 443만이 실제로 옵션입니다. – Chris

+0

@Chris 이들은 지능형 방화벽입니까? 단지 포트라면 80 번과 443 번 포트를 통해 연결하고 자신의 트래픽을 실행할 수 있습니다. Web Socket이어야한다면 Socket.IO와 socket.io-client 패키지를 사용하는 것이 좋습니다. 상자에서 벗어나기 쉽습니다. – Brad

관련 문제