Heim  >  Artikel  >  Backend-Entwicklung  >  Integration von WebSocket in das Django-Framework

Integration von WebSocket in das Django-Framework

WBOY
WBOYOriginal
2023-06-17 12:00:101723Durchsuche

WebSocket ist ein Echtzeit-Kommunikationsprotokoll, das leichter und effizienter als das HTTP-Protokoll ist und Funktionen wie Chatrooms und Echtzeitbenachrichtigungen implementieren kann. In Django können wir Echtzeitkommunikation erreichen, indem wir WebSocket in das Framework integrieren, indem wir die Django Channels-Bibliothek nutzen.

Zuerst müssen wir Django und die Django Channels-Bibliothek installieren. Es kann über das Pip-Tool installiert werden oder es können andere Paketverwaltungstools wie Conda verwendet werden.

pip install django
pip install channels

Als nächstes müssen wir ein Django-Projekt erstellen. Sie können ein Projekt mit dem Namen „myproject“ erstellen, indem Sie den folgenden Befehl verwenden.

django-admin startproject myproject

Im Projekt müssen wir eine Anwendung und einen Ordner zum Speichern des WebSockets-Codes erstellen. Mit dem folgenden Befehl kann eine Anwendung namens „chat“ erstellt werden.

python manage.py startapp chat

Als nächstes erstellen Sie eine Datei namens „routing.py“, die die Routing-Konfiguration für WebSocket definiert.

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())
    ])
})

Im obigen Code definieren wir eine „WebSocket“-Route, die WebSocket-Anfragen über „URLRouter“ an den Pfad weiterleitet, der mit „/ws/chat/“ übereinstimmt. Der „ChatConsumer“ ist hier die Consumer-Klasse, die zur Verarbeitung von WebSocket-Anfragen verwendet wird.

Als nächstes müssen wir eine Datei namens „consumers.py“ erstellen, um den Code für die Verarbeitung von WebSocket-Anfragen zu schreiben.

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
        }))

Im obigen Code haben wir eine Verbraucherklasse namens „ChatConsumer“ erstellt, die die Klasse „AsyncWebsocketConsumer“ erbt. In dieser Klasse gibt es drei Methoden:

  • Methode „connect“: Diese Methode wird aufgerufen, wenn die WebSocket-Verbindung hergestellt wird.
  • Methode „disconnect“: Diese Methode wird aufgerufen, wenn die WebSocket-Verbindung geschlossen wird.
  • Methode „receive“: Diese Methode wird aufgerufen, wenn eine WebSocket-Nachricht empfangen wird.

In dieser Consumer-Klasse haben wir nur die Methoden „connect“ und „receive“ implementiert. Wenn eine WebSocket-Verbindung hergestellt wird, wird die Methode „connect“ aufgerufen und die Verbindung wird über die Methode „accept“ akzeptiert. In der Methode „receive“ können wir die empfangene Nachricht verarbeiten und über die Methode „send“ die Antwort an den Client senden.

Zuletzt müssen wir die Kanalbibliothek in der Einstellungsdatei von Django aktivieren. Fügen Sie die folgende Konfiguration in „settings.py“ im Ordner „myproject“ hinzu:

INSTALLED_APPS = [
    ... # 其他应用程序
    'channels',
    'chat'
]

ASGI_APPLICATION = 'myproject.routing.application'

Im obigen Code haben wir die Anwendungen „channels“ und „chat“ zu „INSTALLED_APPS“ hinzugefügt und dann in „ASGI_APPLICATION“ die Anwendung eingerichtet definiert in der Datei „routing.py“, die wir gerade erstellt haben.

Okay, jetzt haben wir die relevanten Einstellungen für die Integration von WebSocket in Django abgeschlossen. Djangos Entwicklungsserver kann mit dem folgenden Befehl gestartet werden:

python manage.py runserver

Dann können Sie einen WebSocket-Client wie einen Browser verwenden, um eine Nachricht an den Pfad „ws://localhost:8000/ws/chat/“ zu senden und die zu empfangen WebSocket, wir haben gerade die vom Dienst gesendete Antwort geschrieben.

Zusammenfassend lässt sich sagen, dass wir durch die Verwendung der Django Channels-Bibliothek WebSocket problemlos in das Django-Framework integrieren können, um Echtzeit-Kommunikationsfunktionen zu erreichen. Dieser Ansatz ermöglicht es uns, Anwendungen, die Echtzeitkommunikation erfordern, wie Chatrooms und Echtzeitbenachrichtigungen, flexibler und effizienter zu implementieren.

Das obige ist der detaillierte Inhalt vonIntegration von WebSocket in das Django-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn