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

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

Как уже достали «chat app» статьи… такое ощущение, что все вокруг просто таки мечтают написать свой чат. Да и вообще только этим и занимаются. ))))

>… разработчики могут не тратить время на реализацию серверной логики, а сконцентрироваться на других частях приложения.

Ну чтож, круто! Теперь ждем что-то вроде: «Мы реализовали все части вашего софта, теперь разработчики могут не тратиться время на реализацию серверной логики. Да и клиентской логики. Да и вообще не тратиться время, а сконцентрироваться на печеньках с чаем» )))))

Удачи! Извините, если оффтоп.
Спасибо за комментарий. Целью статьи было не создание чата, а возможность рассказать немного о внутреннем устройстве websocket'ов в сервисе Scorocode, а так же показать пример, как эту технологию можно использовать в рамках нашего сервиса.

По поводу «не тратиться», мы уже думаем над кодогенерацией :)

Я что-то не понял, а где логика получения сообщения сервером, резолва пользователей кому будет отправлен ответ и прочее-прочее?

Магия в том, что нет никакой серверной логики. Т.е. Вы подключаете SDK, указываете канал на который нужно подписаться, и он работает в режиме broadcast. В приведенном примере чата всего один общий канал. Но никто не мешает использовать разные каналы для создания тех же комнат.
Платформа Scorocode хранит данные о подписчиках на каналы и при поступлении данных рассылает их. Вы можете использовать эти возможности например для синхронизации корзины на разных вкладках, используя в качестве названия канала id пользователя, где каждый клиент будет подписываться на свой канал, либо для отправки каких-либо обновлений определенному пользователю.

Т.е. получается вы продаёте за цену в 3к рублей, примерно 20 строчек кода (на любом языке, например на php http://socketo.me/docs/hello-world#logic). Ну и сервер сам, цены на хостинги можно нагуглить, в принципе.


Я верно понял смысл?

В целом, думаю вы поняли правильно))) 20 строчек на PHP, 10 строчек на NodeJS и 0 строчек на Hoziron или любой другой self-hosted backend platform.)))
Функционал, который сейчас предоставляет платформа, намного шире одних вебсокетов.
Дополнительно к функционалу реализована отказоустойчивость, репликация, балансировка нагрузки. Для каждого приложения выделяется кластер БД, API.

Согласно нашей тарифной политике, пользователю доступно бесплатно:
  • 20 запрсов к API в секунду
  • 10Гб для хранения файлов
  • 200 одновременных подключений к websockets
  • 3 секунды на исполнение серверного кода


Давайте проведем небольшой расчет. Для реализации простого приложения, которому достаточно вышеуказанных лимитов, потребуется БД, app server, балансировщик. Расчет будем вести с учетом не самых мощных машин. Для небольшого отказоустойчивого проекта нам потребуется:

  • БД реплика (арбитер поставим на машинку с application server) — 2 машины по 4 ядра, 16 Гб Озу
  • Балансировщик — 2 машины (на случай отказа) по 8 ядер, 8 Гб Озу
  • App server — (в целях экономии поставим на те же машинки, что и балансировщики)


Берем стоимость ресурсов с сайта известного российского облачного хостера:
4 ядра, 16 Гб Озу — 5 980р
8 ядер, 8 Гб Озу — 3 900р

(3900 * 2) + (5980 * 2) = 19760

Итого стоимость: 19760 руб. в месяц

В стоимость не включены расходы на канал, дисковое пространство, а также стоимость услуг администратора.

Я понял, но и вы должны меня тоже понять — я крайне скептически отношусь к подобным вещам. Возможно они и имеют место быть, но не представляю себе задачу, где потребуются подобные балансировки и при этом был бы настолько банальным серверсайд без возможности его тюнить.

возможности например для синхронизации корзины на разных вкладках

Это через localStorage проще и дешевле.


Лучше напишите, что с правами (подписка/получение/отправка)?
Есть ли возможность подписки по маске?

Лучше напишите, что с правами (подписка/получение/отправка)?

Доступ к вебсокетам регулируется ключом websocketKey, который можно поменять в настройках приложения.

Есть ли возможность подписки по маске?

В данный момент нет, но мысль интересная, подумаем.

p.s. Хотелось бы получить больше информации по поводу плюшек, которых не хватает и были бы востребованы.
Например: подписка по маске, буферизация и т.д.
Доступ к вебсокетам регулируется ключом websocketKey, который можно поменять в настройках приложения.

Я не про ключ, а каналы, как сделать их приватными? Или предлагаете генерировать уникальные имена? Так это фиии.


Хотелось бы получить больше информации по поводу плюшек, которых не хватает и были бы востребованы.

Ну, вот, например чтобы сделать нормальный чат, нужно хотя бы все возможности Faye

В документации беда с описанием метода Messenger.sendSms() — тынц

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