Комментарии 9
Мне нужен был минимальный функционал, потому что в качестве клиента выступает расширение для браузера. Взял самое простое и популярное решение.
Все верно, спасибо за подробный список. Но насчет последних двух пунктов - у channels то же самое. Плюс гораздо более простой движок, который не позволяет совсем ничего, в то время как SocketIO можно самому расширить, хотя придется покопаться в коде.
Не знаю как сейчас, но раньше у channels были и с масштабированием вопросы и нельзя было выполнить простейшую операцию типа узнать количество подключенных клиентов. Никак. В SocketIO из коробки тоже нельзя, но это решается. И масштабировать через брокер можно.
Поддержка чистых вебсокетов есть уже почти в каждом http-фреймворке - и в httpx, и в aiohttp.
У меня проект на .Net
Тестировал SocketIO и др. решения для фонового обновления клиентского кеша (IndexedDB).
В конечном итоге использую SignalR:
не нужен отдельный порт для ws
простая реализация на клиентской и серверной стороне
интеграция в сущестующее веб-приложение, без необходимости в отдельном сервере
Ох, сэр.. Я сталкивался с SignalR когда мне нужно было получать какие-то данные по этому протоколу как клиенту. У меня основной код был на Python, поэтому пришлось искать библиотеку на нем. Нашел, конечно.. Конечно же, сразу не завелось. И пришлось поразбираться в исходниках, как обычно..
И если SocketIO не очень совместим с вебсокетами, то вот SignalR - это здоровенный комбайн с абстракциями и интерфейсами и полупроприетарным протоколом. Я уже не помню что у меня там не работало - что-то с сертификатами или шифрованием, кажется. Прикрутить это, вроде, можно было, но каким-то образом задача отменилась и я, с облегчением, все выкинул.
Я не могу сказать что он плохой - если у кого-то архитектура на .NET и все клиенты - это только веб-фронт, то почему нет, поскользу он ближе этой среде. Но брать как протокол для других языков - ох нет.
Друг, твоя статья помогла!
Будь добр исправь опечатку в названии функции
async def websocket_recieve -> async def websocket_receive
Как я пытался подружить Django и Websockets