Question

J'ai créé un simple serveur de chat qui est piloté par une interrogation client. Les clients envoient des demandes de données toutes les quelques secondes et se remis de nouveaux messages ainsi que des informations pour savoir si leur poste est toujours connecté.

Étant donné que le client est en cours d'exécution sur une plate-forme mobile (iPhone), je cherche des moyens de se débarrasser du scrutin, qui draine rapidement la batterie. J'ai lu qu'il est possible de maintenir une connexion HTTP ouverte indéfiniment, mais ne l'ai pas compris comment utiliser cette technique dans la pratique. Je me demande aussi si ces connexions sont suffisamment stables pour utiliser dans un cadre mobile.

Le scénario idéal serait que le serveur envoie uniquement des données aux clients lorsqu'un événement qui les touche a eu lieu (comme un pair affichant un message ou d'aller hors ligne).

Est-il conseillé d'essayer d'accomplir ce sur http, ou si je dois écrire mon propre protocole sur tcp? Comment serait-il difficile de personnaliser XMPP à mes besoins (mon serveur de chat a quelques fonctionnalités spécialisées que j'aurais à mettre en œuvre facilement).

Était-ce utile?

La solution

Que diriez-vous de la technologie push? voir http://en.wikipedia.org/wiki/Comet_(programming)

Autres conseils

Je pense que vous décrivez XMPP sur BOSH.

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

Je l'ai utilisé cette méthode de liaison HTTP entre un serveur de chat et javascript client sur les appareils non mobiles. Il a bien fonctionné pour moi.

Vous pouvez vous consulter ce projet qui utilise une variété de techniques, y compris la comète. détails RELEASE sont ici , voici un extrait de cette page

  

Il est mon grand plaisir de pouvoir   d'annoncer la première projection publique   d'un projet que je travaille sur   dans mon temps libre dans le dernier mois ou   deux, un nouveau chat IRC Web Based   application.

     

Ce projet rassemble beaucoup de   les nouvelles technologies qui devaient être   développé pour en faire un possible,   évolutive et efficace.

     

Certains des outils sous-jacents à construire   faire ce que je considère es posible   sont déjà libérés « assez stable »,   tels que le php bibliothèque Socket Daemon   je l'ai écrit pour être en mesure de traiter   des centaines jusqu'à plusieurs milliers de   les connexions http « Comet », et une égale   quantité de connexions client IRC.

Je viens de découvrir cet article moi-même, qui décrit la technique suivante (dont je parlais dans la question):

  

... que le client fait une requête HTTP   et que le serveur tenir la demande   sur la file d'attente jusqu'à ce que il y a un message   pousser. si la connexion TCP / IP est   de perte ou de temps-out, le client   faire une nouvelle requête HTTP, et le retard   ne sera le temps de voyage aller-retour pour une   demande / paire de réponse. . . ce modèle   exige effectivement deux TCP / IP   connexions pour HTTP, client   serveur, bien qu'aucun permanent et   par conséquent, mobile convivial

Je pense que cela est presque impossible et dangereux. Internet fonctionne sens sans état et sans connexion que la connexion entre le client et le serveur est toujours traité comme peu fiable. Et ce n'est pas pour le plaisir.

En essayant d'obtenir une connexion stateful vous introduisez de nouvelles questions. En particulier, à partir d'une application 3g. Que faire si les pauses de connexion? Vous avez aucun contrôle sur le serveur et ne peut pas pousser.

Je pense qu'il serait même plus facile d'envoyer des messages SMS / texte et ont une application qui gère cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top