امروزه در برنامهنویسی وب، نیاز به برنامههای real-time مانند چتاَپها و هشدارها به شدت احساس میشود. Django Channels کتابخانهای است برای کارهای Real-time در جنگو که به شما این امکان را میدهد که قابلیتهایی نظیر WebSocket را به اپلیکیشنهای جنگو اضافه کنید. با استفاده از این ابزار، میتوانید اپلیکیشنهای خود را به سادگی به روزهای مدرن تبدیل کنید.
سرفصل های مقاله
نصب و راهاندازی
برای نصب Django Channels، میتوانید از pip استفاده کنید:
pip install channels
سپس، در فایل settings.py، ASGI_APPLICATION را به پروژهتان اضافه کنید:
ASGI_APPLICATION = "myproject.asgi.application"
عملیات اصلی
Django Channels به شما این امکان را میدهد که با استفاده از WebSocket، اطلاعات را در زمان واقعی ارسال و دریافت کنید. برای این کار، نیاز به تعریف Consumers دارید.
1. ایجاد یک Consumer
یک فایل جدید به نام consumers.py ایجاد کنید و یک Consumer برای مدیریت ارتباطات WebSocket تعریف کنید:
from channels.generic.websocket import AsyncWebsocketConsumer
import json
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
}))
2. تعریف Routing
بعد از تعریف Consumer، باید URLهای مربوط به WebSocket را در فایل routing.py تعریف کنید:
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r’ws/chat/$’, consumers.ChatConsumer.as_asgi()),
]
3. آمادهسازی ASGI
ASGI تنظیمات را به روز کنید تا WebSocketها را مدیریت کند. در فایل asgi.py:
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from .routing import websocket_urlpatterns
application = ProtocolTypeRouter({“http”: get_asgi_application(),
“websocket”: AuthMiddlewareStack(
URLRouter(
websocket_urlpatterns
)
),
})
نتیجهگیری
Django Channels با دادن قابلیتهای کم نظیر برای انجام کارهای Real-time در جنگو به وبسایتها و اپلیکیشنهای شما، امکان ایجاد تجربیات جدیدی را فراهم میکند. با استفاده از WebSocket و دیگر فناوریهای مورد حمایت Channels، میتوانید به سادگی تعاملات زنده را در پروژههای خود اعمال کنید. این کتابخانه ابزاری حیاتی برای هر توسعهدهندهای است که میخواهد به روز باشد و نیازهای مدرن کاربران را برآورده سازد.