Если вы хотите сделать это с django, то у вас не так много вариантов.И, на мой взгляд, django-channels
- лучшее решение для этого.django-channels
предназначен для работы с веб-scoket, чатом и соединениями в реальном времени:
Django Channels - это проект, который использует Django и расширяет его возможности за пределы HTTP - для обработки WebSockets, чатов, IoT-протоколов., и больше.Он построен на спецификации Python под названием ASGI.
Ваш дизайн API не будет таким иным.Конечно, вы должны использовать другие инструменты, и у вас не будет некоторых опций, которые вам дает django-rest-framework
.Но это хорошая библиотека, которая справится с вашей ситуацией.
А по поводу вашего вопроса , ДА, вы можете обрабатывать его везде, где вам нужно.почти все браузеры поддерживают веб-сокеты, и почти все языки программирования для мобильных устройств поддерживают веб-сокеты по своему дизайну.(подробнее о методах связи в текущих приложениях читайте по этой ссылке: web-api-design-method
Конечно, вы потеряете некоторые функции в django rest, такие как serialziers, и у вас будут другиемаршрутизаторы и ... Кроме того, вам просто нужно отправлять данные через сообщения с помощью веб-сокета, и нет необходимости в методах http. Потому что это другой протокол (вы можете заметить это по ws://
перед вызовами API)
Но помните, у вас будут некоторые проблемы в django-channels
, такие как:
Вам нужен веб-сервер asgi для обработки ваших запросов к django-серверу, например, daphne, который отличается, и вы должны научиться конфигурироватьit.
У вас нет сериализатора и тому подобного, и вы должны проверить свои входные данные (кстати, есть библиотека channels-api
для django, которая предоставляет такие функции, как django-rest
, Я не тестировал его, но вы можете проверить его и посмотреть, как он работает.)
Производительность вашего сервера будет зависеть от оперативной памяти для веб-сокетакоммуникации.потому что каждый открывающийся сокет будет потреблять память, а увеличение числа пользователей вызовет проблемы с производительностью.Также обратите внимание, что django-каналы не могут обрабатывать диапазон, например запросы 1M, и вам следует рассмотреть другие протоколы, такие как mqtt, которые легче по дизайну, если ваш проект находится в таком масштабе.