2009-09-24 7 views
0

je dois concevoir un système client /serveur émulé sur un site Web en cours d'exécution Ruby on Rails qui devrait fonctionner comme ceci:message à un client du serveur

une page est demandée par un navigateur Web et Une fois ouvert, le serveur peut y envoyer des messages

Je sais que ce n'est pas possible "naturellement" mais je pensais à une sorte d '"applet java" qui s'exécute sur cette page, en écoutant un port pour les messages être envoyé par le serveur d'hébergement. Cela devrait être fait en ouvrant une sorte de socket qui écoute sur un port où le serveur peut se connecter pour envoyer ses messages.

Est-ce que cela peut être fait? Dois-je développer un thread de serveur Java ou puis-je simplement adresser l'applet client via son adresse IP et son port et utiliser une connexion de service Web du serveur?

merci, Luca

Répondre

1

La meilleure façon de le faire est d'utiliser JavaScript pour imiter le mécanisme de poussée. Le sondage à intervalles réguliers en utilisant AJAX est suffisant dans la plupart des cas. Regardez également le Comet.

0

Une alternative à l'utilisation d'une applet Java peut être d'utiliser une combinaison de javascript et une approche connue sous le nom Comet. En un mot, Comet est un moyen d'activer le push du serveur sur HTTP. Je ne suis pas vraiment un gars de ruby ​​on rails, mais une recherche rapide sur google sur ruby ​​on rails et comet filets une bonne quantité d'informations utiles.

0

Si vous voulez aller à la route de l'applet, vous devez faire la connexion de l'applet au serveur sur lequel la page Web est utilisée. L'applet ne peut pas écouter. Une fois la connexion TCP établie, c'est un canal bidirectionnel, vous pouvez tirer ou pousser aussi longtemps que votre protocole le permet. C'est ainsi que cela se passe avec la plupart des clients de chat basés sur Applet.

De plus en plus de gens utilisent simplement un long sondage en Javascript. Il est assez impliqué pour obtenir un système d'interrogation longue et fiable, je vous suggère d'utiliser un framework. Par exemple,

http://cometdproject.dojotoolkit.org/

2

Comet est certainement ce que vous voulez. En fonction de vos besoins, vous pouvez héberger votre propre serveur comète ou utiliser une solution SaaS, telle que WebSync On-Demand (clause de non-responsabilité: j'y travaille). En utilisant le logiciel SaaS, vous obtenez des capacités de serveur sans avoir à lancer votre propre serveur de comètes.