Puis-je utiliser Socket.IO avec Django?
Est-il possible d'utiliser Socket.IO http://socket.io/ avec Django?
- Vous n'êtes pas très précis. La base, la réponse est "non", depuis la prise.io est un Node.js programme multi-prise en charge du navigateur. D'autre part, il est parfaitement possible d'envoyer des événements à partir de Django à une Prise de courant.io server sur une chaîne locale, et il est parfaitement possible de modifier les lignes de la table de Support.io via DBSlayer de notifier à Django de changements, et il est même possible que les deux laissent des traces dans le client de communiquer entre tous les trois. Mais ce que vous voulez accomplir?
- Je demande un côté serveur django de mise en œuvre existent pour node.js dans django.
- Redis peut aider, il a résolu mon problème
Vous devez vous connecter pour publier un commentaire.
Sûr que vous pouvez!
Django lui-même ne coûtent pas un système, donc vous devez utiliser une Prise de courant.IO serveur en parallèle avec les django serveur, node.js n'est pas toujours un bon choix, mais il existe d'autres écrits en pur python.
ici est un blog/tutoriel qui utilise gevent comme support.io server.
http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/
Pour une solution similaire qui a un peu plus de l'histoire, vous pouvez regarder Autour, (www.orbited.org)
Pas. node.js c'est sa propre langue exécute dans son propre interprète. Toutefois, si vous vous demandez si il y a un Django app qui permet de communiquer avec un Socket.IO client, alors oui et non. Non, car pas de pré-faites la solution existe actuellement, et oui parce que toutes les pièces dont vous avez besoin pour mettre en œuvre ce qu'il existe déjà.
À mettre en œuvre le protocole avec django, découvrez Django-Websocket pour le backend serveur websocket, Ajax bibliothèques de Dajax Projet et Socket.IO-rack qui est un rubis gemme qui implémente le protocole et ruby est assez proche dans sa structure à django que vous pouvez obtenir beaucoup de leur inspiration.
Commencer ici:
et ici:
Il y a quelques Django exemples de la façon de commencer.
Il est basé sur Gevent, qui met en œuvre une coopérative de simultanéité modèle. C'est génial de venir à partir d'une demande/réponse de monde, car il ajoute quelques rappels et des micro-fils, sans l'imposer massivement sur votre flux de travail.
L'essayer 🙂
Je pense que la meilleure façon pour un système de communication avec Django est d'avoir un serveur de nœud d'écoute dans un autre port et l'utilisation de l'api client de la Prise.io. De cette façon, vous n'êtes pas dépendre de l'appui de l'modules pour django et est très simple: Noeud à l'écoute de la demande du client, convertir cette demande dans un message de demande et l'envoyer à Django pour le port sur lequel écouter Django.
Est le meilleur moyen je pense.
server.js
views.py
index.html
Pour un exemple d'utilisation de socket.io avec django, vous voudrez peut-être regarder à django-serverpush. Il intègre django avec la prise.io ainsi que le transport et la tornade/tornandio2 que l'async serveur au lieu de node.js
https://github.com/hamax/django-serverpush
D'autres ont utilisé avec django node.js+socket.io avec rabbitMQ que le message de la file d'attente de pont entre les deux. Il y avait une conversation, "en Temps Réel Django" à djangocon 2011 qui décrit en utilisant cette approche pour les grands temps réel (prix-show-type) des applications.
Les gars il n'y a pas de support solide pour la socket.io avec django... il est comment jamais facile jouet programme de soutien g-événement socket.io soutien a été abandonné pour la dernière année, django-prise.io est également abandonné.
Si vous voulez construire un jouet simple programme à l'aide de django-prise.io et ou g-événement socket.io sûr, mais rien que des échelles est peu probable "https://github.com/ryesoft/gevent-socketio" ceci est expérimental.
Questions avec plus de 1 travailleur avec gunicorn....
https://github.com/abourget/gevent-socketio/issues/112
Le travail autour de ce commit.
https://github.com/getpenelope/gevent-socketio/commit/6c80c17705c9a1b3adcb0f99abde1c4d369c337b
Je pensais que ça allait le jeter là-bas juste au cas où quelqu'un essayait de l'utiliser dans un environnement de production comme mon auto.