WebSocket は、HTTP プロトコルよりも軽量かつ効率的なリアルタイム通信プロトコルであり、チャット ルームやリアルタイム通知などの機能を実装できます。 Django では、Django Channels ライブラリを利用して WebSocket をフレームワークに統合することで、リアルタイム通信を実現できます。
まず、Django と Django Channels ライブラリをインストールする必要があります。 pip ツールを通じてインストールすることも、conda などの他のパッケージ管理ツールを使用することもできます。
pip install django
pip install channels
次に、Django プロジェクトを作成する必要があります。次のコマンドを使用して、「myproject」という名前のプロジェクトを作成できます。
django-admin startproject myproject
プロジェクトでは、WebSocket コードを保存するアプリケーションとフォルダーを作成する必要があります。次のコマンドを使用して、「chat」という名前のアプリケーションを作成できます。
python manage.py startapp chat
次に、WebSocket のルーティング構成を定義する「routing.py」という名前のファイルを作成します。
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()) ]) })
上記のコードでは、「websocket」ルートを定義します。これは、WebSocket リクエストを「URLRouter」経由で「/ws/chat/」に一致するパスにルーティングします。ここでの「ChatConsumer」は、WebSocket リクエストを処理するために使用されるコンシューマ クラスです。
次に、WebSocket リクエストを処理するコードを記述するために、「consumers.py」という名前のファイルを作成する必要があります。
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 }))
上記のコードでは、「AsyncWebsocketConsumer」クラスを継承する「ChatConsumer」という名前のコンシューマ クラスを作成しました。このクラスには 3 つのメソッドがあります:
このコンシューマ クラスでは、「connect」メソッドと「receive」メソッドのみを実装します。 WebSocket 接続が確立されると、connect メソッドが呼び出され、accept メソッドによって接続が受け入れられます。 「receive」メソッドでは、受信したメッセージを処理し、「send」メソッドを介してクライアントに応答を送信できます。
最後に、Django の設定ファイルで Channels ライブラリを有効にする必要があります。 「myproject」フォルダーの「settings.py」に次の構成を追加します。
INSTALLED_APPS = [ ... # 其他应用程序 'channels', 'chat' ] ASGI_APPLICATION = 'myproject.routing.application'
上記のコードでは、「チャンネル」アプリケーションと「チャット」アプリケーションを「INSTALLED_APPS」に追加し、 「ASGI_APPLICATION」で作成したばかりの「routing.py」ファイルで定義されたアプリケーション。
さて、Django に WebSocket を統合するための関連設定が完了しました。次のコマンドを使用して Django の開発サーバーを起動できます:
python manage.py runserver
その後、ブラウザと他の WebSocket クライアントを使用してメッセージを「ws://localhost:8000/ws/chat/」パスに送信し、私たちから受け取る 先ほど作成した WebSocket サービスによって送信された応答。
要約すると、Django Channels ライブラリを使用すると、WebSocket を Django フレームワークに簡単に統合して、リアルタイム通信機能を実現できます。このアプローチにより、チャット ルームやリアルタイム通知などのリアルタイム コミュニケーションを必要とするアプリケーションをより柔軟かつ効率的に実装できるようになります。
以上がWebSocket を Django フレームワークに統合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。