Pregunta

He creado un simple servidor de chat que es impulsado por el sondeo cliente. Los clientes envían solicitudes de datos cada pocos segundos, y se les entregaron los mensajes nuevos, así como información sobre si sus compañeros aún está conectado.

Dado que el cliente se ejecuta en una plataforma móvil (iPhone), que ha estado buscando maneras de deshacerse de la votación, que drena rápidamente la batería. He leído que es posible mantener una conexión HTTP abierto indefinidamente, pero no he entendido cómo utilizar esta técnica en la práctica. También me pregunto si este tipo de conexiones son lo suficientemente estable como para su uso en un entorno móvil.

El escenario ideal sería que el servidor sólo envía datos a los clientes cuando se ha producido un evento que les afecta (como un compañero publicar un mensaje o ir fuera de línea).

¿Es aconsejable tratar de lograr esto a través de HTTP, o tendría que escribir mi propio protocolo sobre TCP? ¿Qué tan difícil sería para personalizar XMPP a mi necesidad (mi servidor de chat tiene algunas características especializadas que tendría que poner en práctica fácilmente).

¿Fue útil?

Solución

¿Qué hay de la tecnología push? ver http://en.wikipedia.org/wiki/Comet_(programming)

Otros consejos

Creo que estás describiendo XMPP sobre BOSH.

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

He utilizado este método de enlace HTTP entre un servidor de chat y javascript cliente en dispositivos no móviles. Funcionó bien para mí.

Es posible que desee echa un vistazo a este proyecto que utiliza una variedad de técnicas que incluyen Comet. a conocer detalles están aquí , He aquí un fragmento de esa página

  

Es mi gran placer de poder   para anunciar la primera exhibición pública   de un proyecto que he estado trabajando en   en mi tiempo libre en el último mes o   dos, una nueva basada en Web de chat IRC   aplicación.

     

Este proyecto reúne una gran cantidad de   nuevas tecnologías que tenían que ser   desarrollado para hacer de esto una factible,   escalable y eficiente.

     

Algunas de las herramientas fundamentales para construir   hacer posible este que considero   ‘Lo suficientemente estable’ ya están en libertad,   tales como el php Socket Daemon biblioteca   Escribí a ser capaz de hacer frente a   cientos de hasta varios miles de   conexiones http “Comet”, y un igual   cantidad de conexiones de cliente de IRC.

Me acaba de encontrar este artículo a mí mismo, que describe la técnica siguiente (que me he referido en la pregunta):

  

... tiene el cliente haga una petición HTTP   y que el servidor mantenga la solicitud   en la cola hasta que haya un mensaje   para empujar. si la conexión TCP / IP es   perdido o los tiempos de espera, el cliente   hacer una nueva petición HTTP, y el retraso   sólo será el tiempo de ida y vuelta para un   solicitud / pair respuesta. . . Este modelo   requiere efectivamente dos TCP / IP   conexiones para HTTP, cliente   servidor, aunque ninguno permanente y   por lo tanto, amigable móvil

Creo que esto es casi imposible y peligroso. El internet funciona significado sin estado y sin conexión que la conexión entre el cliente y el servidor siempre se maneja como poco fiable. Y esto no es por diversión.

Al tratar de conseguir una conexión con estado se está introduciendo nuevos temas. Especialmente desde una aplicación de 3g. ¿Qué pasa si se rompe la conexión? Usted no tiene control sobre el servidor y no se puede empujar.

Creo que sería incluso más fácil de enviar mensajes de texto / SMS y tener una aplicación que se encarga de eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top