2009-08-06 5 views
1

Manytimes 고객은 인스턴트 메시징 (IM) 및 다른 클라이언트 - 투 - 클라이언트 (P2P) 통신과 같은 기능을 웹 앱에 요청합니다. 일반적으로 일반 웹 브라우저에서 어떻게 수행됩니까? 예를 들어 일반 브라우저에서 메신저를 사용할 수있는 Google Wave (및 Gmail)의 데모를 보았습니다. HTTP를 통한 것인가? 아니면 XmlHttpRequest (AJAX)가 그러한 통신에 필요한 백엔드를 제공합니까?클라이언트와 클라이언트 간의 통신에 사용할 수있는 TCP 프로토콜은 무엇입니까?

무엇보다 서버가 원격 클라이언트를 '깨울'수 있는지 궁금한 점이 있습니까? 아니면 클라이언트가 새로운 메신저를 위해 메시지 서버를 "폴링"해야합니까?

답변

3

일반적으로 브라우저는 서버에서 새 메시지를 폴링합니다. 더 효율적으로 만들 수있는 한 가지 방법은 'long poll'입니다 (this link 참조). 서버에 아무것도없는 경우 즉시 응답합니다. 그렇지 않으면 잠시 동안 연결을 유지하면서 대기합니다. 메시지가 들어 오면 곧바로 깨어나 보냅니다. 그렇지 않으면 수십 초가 지나면 '아니요, 체크 백'으로 돌아옵니다. 클라이언트는 즉시 재발신하여 긴 폴링 상태로 되돌아갑니다.

+0

RTMP와 같은 다른 프로토콜에 대한 아이디어가 있습니까? http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol –

+1

다른 프로토콜은 JavaScript에서 지원되지 않는 경향이 있습니다. 플래시를 사용하고 있다면 원시 TCP 소켓을 열어 원하는대로 할 수 있습니다. – bdonlan

관련 문제