50 votes

Puis-je utiliser Socket.IO avec Django ?

Y a-t-il un moyen d'utiliser Socket.IO http://socket.io/ avec Django ?

22voto

23Critters Points 141

Bien sûr que vous pouvez !

Django lui-même n'est pas asynchrone, vous devez donc utiliser un serveur Socket.IO en parallèle de votre serveur django normal, node.js n'est pas toujours un bon choix mais il en existe d'autres écrits en pur python.

Voici un blog/tutoriel qui utilise gevent comme serveur socket.io.

http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/

Pour une solution similaire qui a un peu plus d'histoire, vous pouvez regarder Orbited, (www.orbited.org)

5voto

Thomas Points 7109

Je demande s'il existe une implémentation de Django côté serveur pour node.js dans Django.

Non. node.js est un langage à part entière qui s'exécute dans son propre interpréteur. Cependant, si vous demandez s'il existe une application Django qui permet de communiquer avec un client Socket.IO, alors oui et non. Non parce qu'il n'existe actuellement aucune solution préétablie, et oui parce que toutes les parties dont vous avez besoin pour la mettre en œuvre existent déjà.

Pour mettre en œuvre le protocole avec django, consultez le document suivant Django-Websocket pour le serveur backend websocket, les bibliothèques Ajax de Projet Dajax y Socket.IO-rack qui est une gemme ruby qui implémente le protocole et ruby est suffisamment proche en structure de django pour que vous puissiez vous en inspirer.

2voto

abourget Points 756

Commencez ici :

et ici :

Il existe quelques exemples de Django qui montrent comment démarrer.

Il est basé sur Gevent, qui met en œuvre un modèle de concurrence coopérative. C'est une excellente solution si l'on vient d'un monde de requêtes/réponses, car elle ajoute des callbacks et des micro-threads sans les imposer massivement à votre flux de travail.

Essayez-le :)

1voto

user1228770 Points 11

Pour un exemple d'utilisation de socket.io avec django, vous pouvez regarder django-serverpush. Il intègre django avec socket.io comme transport et tornado/tornandio2 comme serveur asynchrone au lieu de node.js.

https://github.com/hamax/django-serverpush

D'autres ont utilisé django avec node.js+socket.io avec rabbitMQ comme pont de file d'attente de messages entre les deux. Un exposé intitulé "Real-Time Django" a été présenté à la djangocon 2011. Il décrivait l'utilisation de cette approche pour les grandes applications en temps réel (de type award-show).

0voto

Cooltrooper Points 35

Il convient de noter que LearnBoost détaille un certain nombre d'implémentations de socket.io dans d'autres langues, que vous trouverez ici :

https://github.com/LearnBoost/socket.io/wiki

Faites défiler la page jusqu'à la section "In other languages" et vous trouverez une section pour python ainsi que d'autres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X