문제

클라이언트 폴링에 의해 구동되는 간단한 채팅 서버를 만들었습니다. 고객은 몇 초마다 데이터 요청을 보내고 새 메시지와 동료가 여전히 연결되어 있는지 여부에 대한 정보를 제공합니다.

클라이언트가 모바일 플랫폼 (iPhone)에서 실행 중이기 때문에 배터리를 빠르게 배출하는 폴링을 제거하는 방법을 찾고 있습니다. HTTP 연결을 무기한 개방적으로 유지할 수는 있지만 실제로이 기술을 사용하는 방법을 이해하지 못했다는 것을 읽었습니다. 또한 모바일 설정에서 이러한 연결이 안정적인지 궁금합니다.

이상적인 시나리오는 서버가 영향을 미치는 이벤트가 발생했을 때 (예 : 메시지를 게시하거나 라인을 끄는 등) 클라이언트에만 데이터를 보낸다는 것입니다.

HTTP를 통해 이것을 달성하는 것이 좋습니다. 아니면 TCP에 대해 내 자신의 프로토콜을 작성해야합니까? XMPP를 필요에 맞게 사용자 정의하는 것이 얼마나 어려울 것입니까 (채팅 서버에는 쉽게 구현해야 할 특수 기능이 있습니다).

도움이 되었습니까?

해결책

푸시 기술은 어떻습니까? 보다 http://en.wikipedia.org/wiki/comet_(programming)

다른 팁

나는 당신이 Bosh보다 XMPP를 묘사하고 있다고 생각합니다.

http://xmpp.org/extensions/xep-0206.html

비 모빌 장치에서 채팅 서버와 JavaScript 클라이언트 간에이 HTTP- 결합 방법을 사용했습니다. 그것은 나를 위해 잘 작동했습니다.

체크 아웃하고 싶을 수도 있습니다 이 프로젝트 혜성을 포함한 다양한 기술을 사용합니다. 릴리스 세부 정보는 여기에 있습니다, 여기에 해당 페이지의 스 니펫이 있습니다

지난 달 또는 두 달 동안 새로운 웹 기반 IRC 채팅 응용 프로그램 인 내가 여가 시간에 일했던 프로젝트의 첫 번째 공개 쇼를 발표 할 수있어서 나의 독특한 기쁨입니다.

이 프로젝트는 이것을 실현 가능하고 확장 가능하며 효율적으로 만들기 위해 개발되어야하는 많은 새로운 기술을 모았습니다.

내가 '충분히 안정적으로'고려할 수 있도록 기본 도구 중 일부는 이미 릴리스되었다고 생각합니다. PHP 소켓 데몬 라이브러리나는 최대 수백 개의 "혜성"HTTP 연결과 동일한 양의 IRC 클라이언트 연결을 다룰 수 있도록 편지를 썼습니다.

방금 찾았습니다 이 기사 다음 기술을 설명하는 나 자신 (질문에서 언급 한)을 설명합니다.

... 클라이언트가 HTTP 요청을하고 푸시 할 메시지가있을 때까지 서버가 큐의 요청을 보유하도록합니다. TCP/IP 연결이 손실되거나 시간이 소실되면 클라이언트는 새로운 HTTP 요청을하고 지연은 요청/응답 쌍의 왕복 시간 만됩니다. . . 이 모델은 HTTP, 클라이언트 대 서버를위한 두 개의 TCP/IP 연결이 효과적으로 필요하지만, 영구적이지 않고 모바일 친화적 인 것은 아니지만

나는 이것이 거의 불가능하고 위험하다고 생각합니다. 인터넷은 무국적 및 연결이없는 상태에서 작동하며 클라이언트와 서버 간의 연결은 항상 신뢰할 수없는 것으로 처리됩니다. 그리고 이것은 재미를위한 것이 아닙니다.

상태의 연결을 얻으려고 노력하면 새로운 문제가 발생합니다. 특히 3G 응용 프로그램에서. 연결이 끊어지면 어떻게됩니까? 서버를 제어 할 수 없으며 푸시 할 수 없습니다.

SMS/문자 메시지를 보내는 것이 더 쉬울 것이라고 생각하고이를 처리하는 응용 프로그램이 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top