Что: 6855f1c4e5ade25cfd4a97941ce6dab32cedb18a
Когда: 2020-12-08 17:08:32+03:00
Темы: go tip
github.com/agl/xmpp-client XMPP клиент на Go У меня уже прилично времени нет установленного XMPP клиента. Давным давно, я пользовался mcabber и был им полностью доволен. Одно с ним большое но: он не поддерживает несколько учётных записей -- нужно запускать несколько программ. Когда Google, Facebook, ВКонтакте прикрыли возможность его использования, то почти все люди исчезли из мира Jabber. На работе его использовали, но из-за желания использовать мобильные устройства, он тоже отпадает, ибо, насколько понимаю, нету для мобильных ничего нормально работающего, кроме централизованной проприетарщины. И на работах всех Jabber исчез. Но для всяких решений типа Mattermost и Slack есть мосты для IRC. В ivi какое-то время были попытки использовать IRC. На следующей работе тоже, даже использовали, так как связь с XMPP-сервером паршивила. В итоге я уже много лет использовал irssi и bitlbee, который снёс когда Jabber полностью пропал даже на работах. Но всё же учётные записи у меня остались и есть люди с которыми крайне редко, но нужно связаться через него. И вот попробовал xmpp-client -- для супер частого постоянного активного использования (которого в IM-ах у меня уже много лет нет в принципе) он наверное не очень удобен, но в остальном имеет всё что надо. Все базовые фичи Jabber поддерживает, управляет ростером, статусами, показывает изменение статусов собеседников, даёт многострочные сообщения вводить, из коробки сразу же OTR автоматический. Состоит ровно из одного бинарника, без Си зависимостей. Один JSON конфиг, автоматом создаваемый. OTR ключ в нём же хранится, как и отпечатки ключей собеседников. SMP OTR поддерживается. Редактируемая строка ввода, разукрашенный вывод. В общем, для себя взял на заметку что если нужно быстро и просто поднять клиент, то это отличный вариант. Если не нужен MUC (тут уж другие клиенты нужны), передача файлов и подобное. MCabber ещё надо ставить, собирать зависимости, да и конфиг править. Bitlbee аналогично, плюс вспоминать как пользоваться, ибо его help-ы и дока запомнились не лучшей точ��остью, болью и страданиями при работе с MUC. Но bitlbee приятен тем, что для всего используется один irssi (например), а он уже является мостом и можно несколько учётных записей использовать.
From: kmeaw Date: 2020-12-08 16:43:50Z > но из-за желания использовать мобильные > устройства, он тоже отпадает, ибо, насколько понимаю, нету для мобильных > ничего нормально работающего, кроме централизованной проприетарщины У меня отлично работает Conversations (eu.siacs.conversations). Поддерживаются все нужные мне фичи: архив на стороне сервера, возможность загружать и отправлять видео и изображения прямо из клиента с E2E-шифрованием перед HTTP-upload/download. Вроде бы ничего проприетарного он меня использовать не заставляет, работает с любыми XMPP-серверами. В этом клиенте мне не хватает только возможности легко понимать статус собеседника (offline/away/online) без необходимости временно прятать на экране ростера все offline-контакты. Похоже, что это общая тенденция во всех мессенджерах - работать в предположении, что собеседник абсолютно всегда online, ведь у него есть всегда работающий мобильный клиент. До Jabber я пытался использовать IRC для тех же целей, но неудобна необходимость держать bouncer или использовать нестандартизованные расширения протокола, чтобы сохранялись сообщения для меня, когда мой клиент offline.
From: Sergey Matveev Date: 2020-12-08 17:05:01Z
From: kmeaw Date: 2020-12-08 23:40:02Z > потому что клиенту постоянно > нужно по TCP общаться с сервером, тогда как централизованные IM-ы сами > "пнут" мобильное устройство (push-уведомлением) когда есть какое-то > событие на которое нужно реагировать Но ведь телефон каким-то образом получает push-уведомления. Не знаю, как именно, у меня этот компонент не установлен, но вероятно прошивка постоянно держит соединение с каким-нибудь сервером Google и ждёт оттуда сообщений. Чем это отличается от постоянно запущенного клиента, который заставляет телефон просыпаться с некоторой периодичностью и проверять наличие новых событий на сервере? Не знаю, разве что там, что в случае использования централизованного механизма push-уведомлений на телефоне будет ровно один такой пробуждающий телефон сервис, а различных мессенджеров у типичного пользвателя может быть с десяток. Получается, что у меня вместо централизованного сервиса от Google заряд аккумулятора тратит XMPP-клиент. > Или у вас просто нет требования приличного времени работы … > а у других > есть, вот они и говорят что XMPP/IRC/whatever неюзабельны? Особых требований к автономности у меня действительно нет, но телефон (Motorola G5S) часов 40 работает. Возможно как раз благодаря отсутствию Google Play сервисов и почти постоянной IPv6-связности (у XMPP-сервера она тоже есть, а значит можно не делать keepalive для NAT и реже будить телефон, держа долгие TCP-сессии). Не исследовал этот вопрос, потому что меня устраивает, как всё работает сейчас. При настройке сервера я включил https://xmpp.org/extensions/xep-0357.html, но, скорее всего, на моём телефоне это никак не отразилось. На iOS-клиентах (по крайней мере ChatSecure) похоже, что эта фича работает - когда я пишу человеку с таким клиентом в offline, то у неё появляется системное уведомление, что пришло новое сообщение, и при переходе по нему просыпается XMPP-клиент, переводя пользователя в online. Насколько я знаю, Apple ещё более агрессивно "усыпляет" фоновые процессы для экономии заряда, чем Android, и реализовать такой механизм без использования централизованных push-уведомлений от поставщика мобильной ОС невозможно без jailbreak. > Человек не в online -- значит и не надо ему писать. offline-сообщения удобны, чтобы инициировать IM-сессию. Человек перейдёт в online и если увидит, что я тоже online, то мы сможем начать какой-то процесс, для которого важно real-time общение. Можно, конечно, писать в почту "зайди в IRC, надо обсудить такой-то вопрос", но не просто же так в том же IRC придумали MemoServ и bouncer, реагирующий на highlight.
From: Sergey Matveev Date: 2020-12-09 08:59:14Z
Сгенерирован: SGBlog 0.34.0