Question

Je tâtonner un peu avec WebSockets, et a été très satisfait de la façon dont il était facile d'obtenir un fonctionnement du serveur Tornado qui fait les connexions WebSocket de base. Je ne l'ai jamais utilisé Tornado avant aujourd'hui, et tandis que je aime ce que je l'ai vu il y a quelques questions que j'ai au sujet de l'utilisation de ce.

Principalement, j'utilise WebSockets pour que je puisse avoir des communications de bas frais généraux entre deux ou plusieurs machines clientes. (Aux fins de la conversation Disons simplement qu'il est un client de messagerie instantanée) Je ne peux évidemment se connecter au serveur à partir de plusieurs machines, et ils peuvent tous les messages push sur le serveur et le serveur peut répondre, ce qui est génial! Mais ce n'est pas trop beaucoup mieux que vos demandes standard AJAX. Si j'ai une connexion persistante Je veux être en mesure de pousser des données aux clients aussi bien. Le scénario le plus simple possible est l'utilisateur 1 affiche un message au serveur et à recevoir le serveur pousse immédiatement à l'utilisateur 2.

Alors, quelle serait une bonne façon d'y parvenir? Pour autant que je peux voir dans Tornado il n'y a aucun moyen de communiquer entre les connexions autres que placer le message dans un endroit datastore et ayant toutes les autres connexions sondage pour de nouvelles informations. Qui frappe moi comme si terriblement maladroit, parce que tout ce que vous faites vraiment à ce moment-là se déplace le processus de vote du client vers le serveur.

Bien sûr, je peux être aboyer le mauvais arbre tout à fait ici. Il est tout à fait plausible que Tornado est tout simplement pas le bon outil pour ce travail, et si tel est le cas, je serais heureux d'entendre les suggestions des alternatives!

Était-ce utile?

La solution

Voici un serveur de chat en utilisant tornade, WebSockets et Redis: https://gist.github.com/ pelletier / 532067 ( Mise à jour : liaison fixe, @SamidhT merci)

Autres conseils

Bien que la réponse a déjà été acceptée: L'utilisation d'un service différent semble encore très inefficace pour moi. Pourquoi ne pas aller juste avec mémoire partagée + variables / sémaphores conditionnelles? On dirait que tu as un problème standard producteur des consommateurs

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