Maison > Article > développement back-end > Intégration de WebSocket dans le framework Django
WebSocket est un protocole de communication en temps réel plus léger et plus efficace que le protocole HTTP et peut implémenter des fonctions telles que des salons de discussion et des notifications en temps réel. Dans Django, nous pouvons intégrer WebSocket dans le framework en tirant parti de la bibliothèque Django Channels pour réaliser une communication en temps réel.
Tout d’abord, nous devons installer Django et la bibliothèque Django Channels. Il peut être installé via l'outil pip, ou d'autres outils de gestion de packages tels que conda peuvent être utilisés.
pip install django
pip install channels
Ensuite, nous devons créer un projet Django. Vous pouvez créer un projet nommé "monprojet" en utilisant la commande suivante.
django-admin startproject myproject
Dans le projet, nous devons créer une application et un dossier pour stocker le code WebSockets. Une application nommée « chat » peut être créée à l'aide de la commande suivante.
python manage.py startapp chat
Ensuite, créez un fichier appelé « routing.py » qui définit la configuration de routage pour WebSocket.
from channels.routing import ProtocolTypeRouter, URLRouter from django.urls import path from chat.consumers import ChatConsumer application = ProtocolTypeRouter({ "websocket": URLRouter([ path("ws/chat/", ChatConsumer.as_asgi()) ]) })
Dans le code ci-dessus, nous définissons une route "websocket", qui acheminera les requêtes WebSocket via "URLRouter" vers le chemin correspondant à "/ws/chat/". Le "ChatConsumer" est ici la classe de consommateur utilisée pour gérer les requêtes WebSocket.
Ensuite, nous devons créer un fichier appelé "consumers.py" pour écrire le code permettant de gérer les requêtes WebSocket.
import json from channels.generic.websocket import AsyncWebsocketConsumer class ChatConsumer(AsyncWebsocketConsumer): async def connect(self): await self.accept() async def disconnect(self, close_code): pass async def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] await self.send(text_data=json.dumps({ 'message': message }))
Dans le code ci-dessus, nous avons créé une classe de consommateur appelée "ChatConsumer" qui hérite de la classe "AsyncWebsocketConsumer". Il existe trois méthodes dans cette classe :
Dans cette classe de consommateurs, nous avons uniquement implémenté les méthodes « connecter » et « recevoir ». Lorsqu'une connexion WebSocket est établie, la méthode « connect » sera appelée et la connexion sera acceptée via la méthode « accept ». Dans la méthode « recevoir », nous pouvons traiter le message reçu et envoyer la réponse au client via la méthode « envoyer ».
Enfin, nous devons activer la bibliothèque Channels dans le fichier de paramètres de Django. Ajoutez la configuration suivante dans "settings.py" dans le dossier "myproject" :
INSTALLED_APPS = [ ... # 其他应用程序 'channels', 'chat' ] ASGI_APPLICATION = 'myproject.routing.application'
Dans le code ci-dessus, nous avons ajouté les applications "channels" et "chat" dans "INSTALLED_APPS" puis dans "ASGI_APPLICATION" Configurer l'application défini dans le fichier "routing.py" que nous venons de créer.
D'accord, nous avons maintenant terminé les réglages pertinents pour l'intégration de WebSocket dans Django. Le serveur de développement de Django peut être démarré avec la commande suivante :
python manage.py runserver
Ensuite, vous pouvez utiliser un client WebSocket tel qu'un navigateur pour envoyer des messages au chemin "ws://localhost:8000/ws/chat/" et recevoir le WebSocket nous venons d'écrire La réponse envoyée par le service.
En résumé, en utilisant la bibliothèque Django Channels, nous pouvons facilement intégrer WebSocket dans le framework Django pour réaliser des fonctions de communication en temps réel. Cette approche nous permet de mettre en œuvre de manière plus flexible et efficace des applications nécessitant une communication en temps réel, telles que des salons de discussion et des notifications en temps réel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!