Как стать автором
Обновить

Комментарии 9

Не используйте channels - возьмите что-нибудь вроде socket.io - там и клиентская часть есть, и движок с автореконнектом и может откатиться на long polling если websockets недоступен по какой-то причине. Автор питоновского движка довольно оперативно отвечает на баги и на SO.

Мне нужен был минимальный функционал, потому что в качестве клиента выступает расширение для браузера. Взял самое простое и популярное решение.

НЛО прилетело и опубликовало эту надпись здесь

Все верно, спасибо за подробный список. Но насчет последних двух пунктов - у channels то же самое. Плюс гораздо более простой движок, который не позволяет совсем ничего, в то время как SocketIO можно самому расширить, хотя придется покопаться в коде.

Не знаю как сейчас, но раньше у channels были и с масштабированием вопросы и нельзя было выполнить простейшую операцию типа узнать количество подключенных клиентов. Никак. В SocketIO из коробки тоже нельзя, но это решается. И масштабировать через брокер можно.

Поддержка чистых вебсокетов есть уже почти в каждом http-фреймворке - и в httpx, и в aiohttp.

У меня проект на .Net
Тестировал SocketIO и др. решения для фонового обновления клиентского кеша (IndexedDB).
В конечном итоге использую SignalR:

  • не нужен отдельный порт для ws

  • простая реализация на клиентской и серверной стороне

  • интеграция в сущестующее веб-приложение, без необходимости в отдельном сервере

Ох, сэр.. Я сталкивался с SignalR когда мне нужно было получать какие-то данные по этому протоколу как клиенту. У меня основной код был на Python, поэтому пришлось искать библиотеку на нем. Нашел, конечно.. Конечно же, сразу не завелось. И пришлось поразбираться в исходниках, как обычно..

И если SocketIO не очень совместим с вебсокетами, то вот SignalR - это здоровенный комбайн с абстракциями и интерфейсами и полупроприетарным протоколом. Я уже не помню что у меня там не работало - что-то с сертификатами или шифрованием, кажется. Прикрутить это, вроде, можно было, но каким-то образом задача отменилась и я, с облегчением, все выкинул.

Я не могу сказать что он плохой - если у кого-то архитектура на .NET и все клиенты - это только веб-фронт, то почему нет, поскользу он ближе этой среде. Но брать как протокол для других языков - ох нет.

Верно, для других языков SignalR не подойдет.
Как вы написали выше - в SignalR под капотом масса логики, включая авто-переход на long polling, если websockets по какой-то причине не поддерживается.
А на поверхности все просто.

Друг, твоя статья помогла!
Будь добр исправь опечатку в названии функции
async def websocket_recieve -> async def websocket_receive


Я рад, спасибо. Опечатку исправил

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации