LINUX.ORG.RU

Чатик на WebRTC - имеет ли смысл

 , ,


0

1

Решил для общего развития поковырять WebRTC и попробовать сделать на нем p2p-чатик (сначала текстовый, а затем может и видео прикрутить).

Изначально планировалось, что своего рода фишкой чатика будет являться почти не нагруженный бэкенд, так как сами сообщения будут передаваться между пользователями напрямую.
То есть в бэкенде будет только авторизация пользователя и хранение-отдача списка контактов и комнат.
Позже пришло осознание того, что категорически неплохо было бы сохранять историю. Была мысль сделать сохранение истории с помощью вообще отдельного сервиса-бота, который автоматически добавляется в любой чат и сохраняет все, что видит. Также была мысль просто постить ее на сервер с помощью XHR или WebSocket. В общем, сомнения закрались уже в этот момент, но я решил все же пойти дальше и почитать про WebRTC.
Из чего получается, что связь с бэкендом аля вебсокет мне нужна в любом случае, чтобы рассказывать пирам друг про друга. А еще, в идеале, нужен STUN или TURN сервер, хотя есть и публичные.
Итого, единственное, что я экономлю в сравнении с классическим websocket-чатом - это работу сервера и трафик на рассылку сообщений от одного клиента всем участникам комнаты.

Исходя из простыни выше два вопроса:
1. Если бы речь шла не о поделке для себя, а о продакшн решении с большой пользовательской базой - была бы ощутима экономия от использования webrtc?
2. Выбирая между отправкой истории на сервер самим клиентом и подключением к чату бота, который сохранял бы историю, какой вариант выбрали бы вы и почему?
Меня вариант с ботом привлек тем, что во-первых, не нужно писать клиентский код для логгирования (и дублировать его, если захочется заиметь клиентов под другие платформы), во-вторых, можно складывать логи на любой сервер (в случае с отсылкой их, нужно было бы отдельно как-то авторизовывать клиента еще и на сервере логов).

★★★

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

unikoid ★★★
() автор топика

была бы ощутима экономия от использования webrtc?

чятик

о продакшн решении

Тебе мало чятиков? Или ты за них платишь?

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

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

Кроме того, никогда не плохо заранее знать правильный путь, если вдруг понадобиться сделать что-то подобное в рамках работы (то есть продакшна).

unikoid ★★★
() автор топика
Ответ на: комментарий от unikoid

В общем, смысл первого вопроса такой. Высока ли стоимость работы бэкенда и сетевого трафика по рассылке сообщений с сервера всем пользователям в комнате?

Отталкивайся от 1000-10000 сообщений в секунду на ядро процессора.

Vit ★★★★★
()
Ответ на: комментарий от Deathstalker

Ну минимально рабочий пример, как я понял, можно собрать прям из кода в статье.
Только:
1. В хроме (и, соотв, всех форках), судя по https://code.google.com/p/chromium/issues/detail?id=465349, не поддерживается.
2. В чем практический смысл? Когда нужно передавать два стрима? Пока в голову кроме стриминга игр с вебкой ничего не приходит, но сомнительно, что браузер сможет стримить видеопоток из OGL/D3D игры.

unikoid ★★★
() автор топика

Калькулятор говорит чем больше людей тем больше профит. Но пока людей нет, можно и не париться. А если будут люди то будет и все рстальное.

Займись лучше чемнить полезным.

redixin ★★★★
()

имеет ли смысл

Ощутимый смысл имеется в допиливании XMPP софта. В нём уже всё придумано - и хранение истории, и видеозвонки, и хранение списка контактов. Не хватает interoperability между софтинами и актуальных исправлений для уже созданной функциональности существующего софта. Такие мощные реализации, как Pidgin и Gajim, лучшие на Linux-десктопе, из рук вон плохо мейнтейнятся.

была бы ощутима экономия от использования webrtc?

Не надо так всерьёз плясать вокруг WebRTC.

WebRTC - это не более, чем API для удобной для веб-приложений и безопасной (для пользователя) работы с медиапотоками, плюс имплементация в браузерах. По сути имплементация одна, и ею пользуются Chrome и Firefox, и, по большому счёту, больше никто, насколько я понимаю. Я клоню к тому, что WebRTC - это не эпохальная концепция, это всего лишь API, актуальный на конкретной платформе. Везде, кроме вышеуказанных браузеров, WebRTC - это всего лишь одна из альтернативных библиотек.

Но свободные веб-приложения для джабера тоже в печальном положении, и работать над ними нужно (применяя знание WebRTC). Изобретать велосипеды - не нужно.

Выбирая между отправкой истории на сервер самим клиентом и подключением к чату бота, который сохранял бы историю, какой вариант выбрали бы вы и почему?

Я выбираю XEP-0313 Message Archive Management. Как красиво это работает (уже! ничего не надо придумывать!), можно посмотреть в Android-клиенте Conversations и на сервере, где эта фича включена (jabber.at, decent.im).

Andrey_Utkin ★★
()
Ответ на: комментарий от mix_mix

Посмотрел про совместимость, печаль получается.
На мобильных яблодевайсах не получить никак, а MS, как всегда, пилит свою собственную условно совместимую реализацию.
Правда, caniuse говорит WebKit status: In Development, а у яббла, насколько мне известно, все на вебките.

unikoid ★★★
() автор топика
Ответ на: комментарий от Deleted

Не мертвее, чем RSS/Atom feeding. Открытый стандарт для свободного веба. Если не хотим быть рабами корпораций, нужно пользоваться открытыми технологиями. XMPP уже прошёл путь в надцать лет развития, им все пользуются, как фундаментом для коммерческих продуктов. Я не думаю, что для такой вещи, как чаты, стоит придумывать что-то совсем новое, когда есть XMPP.

Andrey_Utkin ★★
()
Ответ на: комментарий от Andrey_Utkin

Не мертвее, чем RSS/Atom feeding.

Пользователей лент дофига, пользователей xmpp только 2.5 гика. Гугл с фейсбуков выкинули xmpp на помойку и былы правы: нафиг не нужен протокол без аудио и видеозвонков в 2015+ году.

им все пользуются

Кроме старых хипстеров он нахрен никому не упал. Сейчас используют фейсбук и вацап со скайпом.

стоит придумывать что-то совсем новое

Уже придумали и оно уже успело взлететь. Вылазь из криокамеры.

Deleted
()
Ответ на: комментарий от Deleted

Пользователей лент дофига

Гугл с фейсбуков выкинули xmpp на помойку

По аналогии: Twitter и G+ выкинули ленты на помойку.

Кроме старых хипстеров он нахрен никому не упал. Сейчас используют фейсбук и вацап со скайпом.

Цитируй правильно:

> им все пользуются, как фундаментом для коммерческих продуктов

Например, WhatsApp uses a customized version of the open standard Extensible Messaging and Presence Protocol (XMPP).

Уже придумали и оно уже успело взлететь. Вылазь из криокамеры.

Это ты про WhatsApp, который базируется на XMPP? Или Google Hangouts, или, может, Hipchat? Куда ни плюнь - попадёшь в надстройку над XMPP.

Andrey_Utkin ★★
()
Ответ на: комментарий от Deleted

нафиг не нужен протокол без аудио и видеозвонков в 2015+ году.

4.2. Протокол - со звонками. XEP-0167.

Andrey_Utkin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.