WebSocket ialah protokol komunikasi masa nyata yang lebih ringan dan cekap daripada protokol HTTP dan boleh melaksanakan fungsi seperti bilik sembang dan pemberitahuan masa nyata. Dalam Django, kami boleh menyepadukan WebSocket ke dalam rangka kerja dengan memanfaatkan perpustakaan Saluran Django untuk mencapai komunikasi masa nyata.
Pertama, kita perlu memasang Django dan pustaka Saluran Django. Ia boleh dipasang melalui alat pip, atau alat pengurusan pakej lain seperti conda boleh digunakan.
pip install django
Seterusnya, kita perlu mencipta projek Django Anda boleh mencipta projek bernama "myproject" dengan menggunakan arahan berikut.
pip install channels
Dalam projek, kita perlu mencipta aplikasi dan folder untuk menyimpan kod WebSockets. Aplikasi bernama "chat" boleh dibuat menggunakan arahan berikut.
django-admin startproject myproject
Seterusnya, buat fail yang dipanggil "routing.py" yang mentakrifkan konfigurasi penghalaan WebSocket.
python manage.py startapp chat
Dalam kod di atas, kami mentakrifkan laluan "websocket", yang akan menghalakan permintaan WebSocket melalui "URLRouter" ke laluan yang sepadan dengan "/ws/chat/". "ChatConsumer" di sini ialah kelas pengguna yang digunakan untuk mengendalikan permintaan WebSocket.
Seterusnya, kita perlu mencipta fail yang dipanggil "consumers.py" untuk menulis kod yang mengendalikan permintaan 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()) ]) })
Dalam kod di atas, kami telah mencipta kelas pengguna yang dipanggil "ChatConsumer" yang mewarisi kelas "AsyncWebsocketConsumer". Terdapat tiga kaedah dalam kelas ini:
Dalam kelas pengguna ini, kami hanya melaksanakan kaedah "sambung" dan "terima". Apabila sambungan WebSocket diwujudkan, kaedah "sambung" akan dipanggil dan sambungan akan diterima melalui kaedah "terima". Dalam kaedah "terima" kita boleh memproses mesej yang diterima dan menghantar respons kepada pelanggan melalui kaedah "hantar".
Akhir sekali, kami perlu mendayakan pustaka Saluran dalam fail tetapan Django. Tambahkan konfigurasi berikut dalam "settings.py" dalam folder "myproject":
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 }))
Dalam kod di atas, kami menambah aplikasi "saluran" dan "sembang" pada "INSTALLED_APPS", dan kemudian Sediakan aplikasi yang ditakrifkan dalam fail "routing.py" yang baru kami buat dalam "ASGI_APPLICATION".
Baiklah, kini kami telah melengkapkan tetapan yang berkaitan untuk menyepadukan WebSocket dalam Django. Pelayan pembangunan Django boleh dimulakan dengan arahan berikut:
INSTALLED_APPS = [ ... # 其他应用程序 'channels', 'chat' ] ASGI_APPLICATION = 'myproject.routing.application'
Kemudian, anda boleh menggunakan klien WebSocket seperti pelayar untuk menghantar mesej ke "ws://localhost:8000/ws/chat/" laluan dan terima daripada kami Respons yang dihantar oleh perkhidmatan WebSocket yang baru anda tulis.
Ringkasnya, dengan menggunakan pustaka Saluran Django, kami boleh menyepadukan WebSocket dengan mudah ke dalam rangka kerja Django untuk mencapai fungsi komunikasi masa nyata. Pendekatan ini membolehkan kami melaksanakan aplikasi yang memerlukan komunikasi masa nyata seperti bilik sembang dan pemberitahuan masa nyata dengan lebih fleksibel dan cekap.
Atas ialah kandungan terperinci Mengintegrasikan WebSocket ke dalam rangka kerja Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!