Y a-t-il un moyen d'utiliser Socket.IO http://socket.io/ avec Django ?
Réponses
Trop de publicités?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)
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.
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 :)
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).
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.