0

있습니다. 나는 현재 종류의 python net-chat 프로그램을 만들고있다. 현재 로컬 네트워크에서만 작동하며 라우터의 방화벽이 전송 된 메시지를 차단하기 때문에 네트워크 외부에 연결된 클라이언트에게 메시지를 보낼 수 없습니다.메시징 응용 프로그램은 방화벽을 "우회"합니까?

제 질문은 다음과 같습니다. 메시징 응용 프로그램이 클라이언트에 메시지를 보내려면 방화벽을 "우회"하는 방법은 무엇입니까? 서버에서 정보를 "가져 오는"것과 같은 것을 사용하고 메시지를 다시 터널링합니까? 그러나 매 초마다 가져 오는 경우에도 많은 양의 배터리를 사용합니다. 매분을 가져 오는 것은 비실용적입니다. 내 IMAP 서버가 내 이메일을 내 핸드폰에 "푸시"하는 것처럼 "푸시"프로토콜을 더 많이 사용한다고 생각했습니다. 하지만 어떻게 이러한 연결이 방화벽을 통과합니까?

+0

그들은 정상적으로 차단되지 않은 포트 443에서 소켓을 연결하고 있습니다. –

+0

라우터는 메시지를 보낼 클라이언트를 어떻게 알 수 있습니까? – Joshua

답변

0

당신이 찾고있는 것이 어떤 종류의 푸시 알림 아키텍처라고 생각합니다. 나는이 두 가지 자원을 가리키는 것 :

는 기본적으로 클라이언트 장치는 무기한 개방 유지하는 통지 서버와 양방향 연결을 설정합니다. 응용 프로그램 서버는 알림 서버에 등록되며 클라이언트 장치에 알리지 않을 때 클라이언트 장치에 열린 연결을 사용하는 알림 서버에 메시지를 보냅니다. 보통 다른 응용 프로그램은 효율성을 위해 동일한 알림 서버를 사용합니다.

클라이언트 디바이스는 통지 서버와의 이중 연결을 설정하고, app 서버는 클라이언트에 대한 통지를 통지 서버에 보내고, 통지 서버는 통지를 적절한 클라이언트에 전송합니다.

+0

그래서 소켓을 열고 사용자가 소켓을 닫을 때까지 소켓을 열어 두어야합니까? – Joshua

+0

네, 그렇게 할 수는 있지만 이것이 유일한 방법이라고 생각하지 않습니다. 푸시 알림 서버의 오픈 소스 구현을 찾아서 어떻게하는지 직접 확인해 보시기 바랍니다. 이렇게하면 짧은 대답보다 훨씬 더 많은 상황을 알 수 있습니다. –

+0

오케이. 고맙습니다. – Joshua