Maison > développement back-end > Tutoriel Python > Intégration de WebSocket dans le framework Django

Intégration de WebSocket dans le framework Django

WBOY
Libérer: 2023-06-17 12:00:10
original
1779 Les gens l'ont consulté

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
Copier après la connexion
pip install channels
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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())
    ])
})
Copier après la connexion

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
        }))
Copier après la connexion

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 :

  • Méthode "connect" : Cette méthode sera appelée lorsque la connexion WebSocket sera établie.
  • Méthode "disconnect": Cette méthode sera appelée lorsque la connexion WebSocket sera fermée.
  • Méthode « receive » : Cette méthode sera appelée lors de la réception d'un message WebSocket.

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'
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal