Rumah > pembangunan bahagian belakang > Tutorial Python > Mengintegrasikan WebSocket ke dalam rangka kerja Django

Mengintegrasikan WebSocket ke dalam rangka kerja Django

WBOY
Lepaskan: 2023-06-17 12:00:10
asal
1762 orang telah melayarinya

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
Salin selepas log masuk
rrree

Seterusnya, kita perlu mencipta projek Django Anda boleh mencipta projek bernama "myproject" dengan menggunakan arahan berikut.

pip install channels
Salin selepas log masuk

Dalam projek, kita perlu mencipta aplikasi dan folder untuk menyimpan kod WebSockets. Aplikasi bernama "chat" boleh dibuat menggunakan arahan berikut.

django-admin startproject myproject
Salin selepas log masuk

Seterusnya, buat fail yang dipanggil "routing.py" yang mentakrifkan konfigurasi penghalaan WebSocket.

python manage.py startapp chat
Salin selepas log masuk

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())
    ])
})
Salin selepas log masuk

Dalam kod di atas, kami telah mencipta kelas pengguna yang dipanggil "ChatConsumer" yang mewarisi kelas "AsyncWebsocketConsumer". Terdapat tiga kaedah dalam kelas ini:

  • kaedah "sambung": Kaedah ini akan dipanggil apabila sambungan WebSocket diwujudkan.
  • Kaedah "putus sambungan": Kaedah ini akan dipanggil apabila sambungan WebSocket ditutup.
  • Kaedah "terima": Kaedah ini akan dipanggil apabila mesej WebSocket diterima.

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
        }))
Salin selepas log masuk

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'
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan