Встречается на собеседованиях • сегодня

Как реализовать WebSocket с Django

Для реализации WebSocket в Django можно использовать библиотеку channels, которая расширяет стандартные возможности Django для работы с асинхронными протоколами.

  1. Установите channels:
bash
pip install channels
  1. Добавьте channels в INSTALLED_APPS:
python
INSTALLED_APPS = [
    ...
    'channels',
]
  1. Создайте файл routing.py для маршрутизации WebSocket-запросов:
python
from channels.routing import ProtocolTypeRouter, URLRouter
from django.urls import path
from yourapp.consumers import YourConsumer

application = ProtocolTypeRouter({
"websocket": URLRouter([
path("ws/some_path/", YourConsumer.as_asgi()),
]),
})

text

4. Создайте consumer (обработчик соединений):
```python
from channels.generic.websocket import AsyncWebsocketConsumer

class YourConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        await self.accept()

    async def disconnect(self, close_code):
        pass

    async def receive(self, text_data):
        await self.send(text_data="Echo: " + text_data)
  1. В settings.py укажите ASGI-приложение:
python
ASGI_APPLICATION = 'yourproject.routing.application'

Для работы потребуется Redis или другой брокер сообщений. Пример для Redis:

python
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("127.0.0.1", 6379)],
        },
    },
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы