Комментарии 25
Да, я знаю весь стандартный набор комментариев про ограничения платформы, кривые пуши, фоновые ограничения и то, что «настоящие пацаны пишут только натив»
Я даже не успел до базовых ограничений добраться, потому что мой сеанс тестирования завершился прямо на входе 🥲

Это же PWA, зачем же так бить себя по рукам и вставлять палки себе в колёса строго ограничивать возможности своего же продукта?
Заходишь на сайт, видишь там большую кнопку - открыть этот замечательный мессенджер. Нажимаешь ее и видишь там такое. Автор, ну зачем? Как я тебе поверну 27 дюймовый мониитор, он же тяжелый, неудобно его держать в таком виде и писать сообщение одновременно.
"Заузил" окно, чтобы оно казалось приложению вертикальным. Баг прошел, приложение "пытается" открыться, но видно только пустой черный экран. Linux/Firefox
Как написал автор "Ну вроде едет" - похоже у меня как и у вас велосипед не той системы) если на первом же этапе такая преграда, то добраться до финиша надо ещё постараться)))
. Заузил, прошел этап 1. Второй этап только Gmail. И долго шло письмо, но я справился). Наверное тест на человечность.. uin за это время изменился.
Имя недоступно. Номер только для РФ? Печаль
Короче. Все очень ещё сыро, но вроде понятно и аську напоминает. Ещё бы звуки оттуда.
За найденные баги с логином — спасибо. Логи вижу, буду фиксить.
А с приходом кода на почту - код должен приходить достаточно быстро (по крайней мере достаточно быстро для того чтобы поймать добытый UIN) - проверь пожалуйста, не было ли первого сообщения с кодом в спаме? Детали можно писать в TG мне или непосредственно в моем мессенджере какой тестируем.
Ребят, я понимаю вашу боль, но давайте честно: я строю мобильный мессенджер для связи на ходу, а не корпоративный Slack для 27-дюймовых мониторов.
Заглушка на десктопе и жесткая привязка к вертикали — это не палки в колеса, это суровая расстановка приоритетов. У меня две руки и 24 часа в сутках. После работы над бекендом и инфраструктурой, оставшиеся силы я решил направить на PWA, но чтобы оно вело себя почти как натив на телефоне, держало сокет и не жрало батарею. Чтобы мог пользоваться на телефоне я и мои близкие. Десктопный фронтент — отдельная песня, которую я пока не начинал петь.
Спойлер на будущее: когда допилю ядро и если получится создать и выложить SDK/библиотеку, кто угодно сможет написать хоть CLI-клиент для Linux, хоть десктоп на Электроне, хоть клиент для умного холодильника. А пока — эмулируйте мобилку в DevTools или открывайте с телефона.
я строю мобильный мессенджер
Так это надо было сразу в заголовок вынести или хотя бы в тексте обозначить, а не в комментариях объяснять спустя ~10 часов после презентации 😉
Просто странно показалось: PWA буквально сделан для того, чтобы быть везде, а тут такое нелепое искусственное ограничение — поэтому и написал 🙂
Вы делаете хорошее дело, продоллжайте. Комментарий про монитор и подобные - он по сути шуточный, всем все понятно, разработчикам: и про кол-во рук, и про часы в сутках. Это не придирка, а просто обратная связь от тех, кто тестирует приоложение, кого оно заинтересовало (иначе бы даже не запускали).
На гитхаб не выложил, значит есть что скрывать)
Конечно мне есть что скрывать) Там местами такой слой изоленты и хардкода, что от моего репозитория заплачет даже самый суровый сеньор, а мне придется краснеть за это.
Статья не о том, «как писать идеальный код», а о том, что живая система уже крутится и ее можно потрогать руками (и попытаться поломать, если получится). Кстати логи на фронтенде (см. DevTools) сейчас открыты очень богатые, можно отлично посмотреть что происходит и как это работает на практике.
А исходники выложу когда мне самому перестанет быть за них стыдно. Сейчас моя цель — краш-тест архитектуры и приложения под нагрузкой и хаосом пользовательского поведения, а не код-ревью моего личного франкенштейна. Кому без гитхаба не читается — ваше право. Остальным — велкам на прод развлекаться и пробовать ломать транспорт.
Хотите проверить, как это переживает плохую сеть — отлично
В этом вопросе белые списки российских мобильных операторов предоставляют вам обширное пространство для натурных экспериментов.
А чего xmpp не поднять просто?
На самом деле xmpp (например, на ejabberd) как и например Matrix - замечательные современные решения
Matrix (на Synapse) - отличное полуготовое решение с настоящим (а не просто заявленным) E2E для самохостинга. Пробовал его. К сожалению Synapse написан в основном на Python (как я понял), и не самый шустрый - федеративность тут не только идеолоическая но но чисто техническая необходимость. Помимо Synapse есть альтернативные решения (например есть эксперименты на Rust) но они не поддерживают многого. Есть некоторые неудобства для меня как пользователя (например настоящий E2E жестко привязывается к конкретному устройству и использование аккаунта с нескольких устройств практически невозможно) И если на ПК клиенты для Matrix более менее адекватно работают, то на мобильных устройствах почему-то все печально с этим - тормознутость их мобильных клиентов я уж и не знаю чем объяснить.
xmpp (ejabberd) - отличное проверенное временем решение. Даже более того скажу - в первых версиях прототипа я и собирался сделать просто симпатичный клиент для ejabberd, просто обогатив его парой современных функций. Но попробовав это, протестировав - увидев что многие функции не отвечают современным паттернам мессенджеров (например слишком шумные MUC-комнаты, где расход на трафик и процессор растет в геометрической прогрессии с ростом количеством пользователей там), и вкусив всю сложность работы с Legacy системой при попытках хоть немного расширить функционал и понял что все это в итоге легче будет написать с нуля.
Всё это разбивается о законы РФ с регистрацией через смс/госуслуги, предоставлением всего кому надо, реестрах ОРИ и прочем. Так что если это будут использовать не два человека - то и заблочат сразу. При этом все эти законы расчитаны на то, что негодяи не будут такой вот селф-хостед с e2e шифрованием на коленке лепить из кучи готового на гитхабе, т.е. реальную угрозу не устраняют.
Так что придем к белым спискам, к сожалению,
И не только законы РФ, очень много стран где мессенджеры регулируются. И крайне не рекомендую такие мессенджеры даже собранные на коленке давать в свободный доступ запушённый на своей инфраструктуре. (Если мессенджер используется для распространения запрещенной информации (например, экстремистской), его создатели могут быть привлечены к уголовной ответственности).
Чтобы не слишком беспокойно спать держа собственный мессенджер, нужно жить не в России (хотя история Дурова во Франции показывает, что не является абсолютной гарантией, но и Telegram пытается быть чуть менее замодерированной площадкой, чем другие, если же полностью идти на встречу властям, то комплаенс мессенджеров во многих странах попроще, чем в России, и не выглядит как заградительный).
Но если жить не в России, то у тебя работает и Telegram, и Whatsup, так что мотивация что-то делать уменьшается)
А если хотя бы формально соответствовать требованиям российской юрисдикции, то банально нужна авторизация по номеру телефона, а это требует финансовых вложений линейно зависящих от количества пользователей (в отличии от сервера, который можно хостить под кроватью и/или как то особо оптимально написать бекэнд). А ещё регистрация самого мессенджера в РКН, что-то там с СОРМ и т. д.
Льстит, конечно, что мою гаражную поделку в коментариях к первой же публикации сравнивают с империей Дурова. Спасибо. Но давайте спустимся на землю. У Павла миллиарды, лучшие инженеры и статус глобального игрока. У меня — кофе, энтузиазм и Docker-контейнер.
Я не ОРИ. И я не делаю коммерческий продукт на миллионы людей.
А если уж мой сервер внезапно начнет превращаться в даркнет и рассадник запрещенки — я сам выпилю этих юзеров без суда и следствия. Этот проект - мой личный инженерный эксперимент, и альтернативный канал связи для тех кто хочет хоть как-то связаться с близкими. Уж извините, без обид.
Проблема тут не в эстетике. Проблема в том, что верхний вариант ищет по нужному полю
Как правило искать пользователю надо не по «нужному полю» а по всем полям. Вы Гуглом пользовались? Он не спрашивает по каким полям искать- просто данные выдает.
Далее: зачем все валить в одну базу PostgreSQL? У вас проблемы будут если начнут более 2-х клек пользоваться.
Допустим у нас 1М пользователей.
Каждому даем свою базу SQLite.
На каждого активного пользователя на back-end по одному потоку erlang. Итого плюс/минус умножим на 5, поскольку будут и другие потоки. Имеем 5 млн распределенных потоков
Каждый сам по себе, на каком реально сервере поле крутиться пользователю по барабану. Можно их на 1000 серверов раскинуть.
Итого: поиск в SQLite базе в чатах одного пользователя займет что-то около 0 времени.
Без исходников, мог бы даже не утруждаться писать эту портянку.
Была недавно статья про свой аналог дискорда - https://habr.com/ru/articles/1009658/
Может, автору будет интересно.
Поднять свой matrix сервер с блек Джеком и шлюхами не вариант?
Да, интересно, спасибо.
На самом деле парень @Mhessel красавчик. Выбрал хороший современный стек, который к тому же любят нейросети.
React популярный, куча готовых компонентов, и достаточно хорош для фронтенда (особенно когда уже есть опыт работы с ним). Красивый дизайн для ПК.
node.js который он выбрал для бекенда - также достаточно неплохой для бекенда (само собой когда на TypeScript, и хорош например в nest.js). Тут и единый язык с фронтендом, и хорошая конкурентность, и достаточная производительность для маленького проекта. Проблемы могут быть в нюансах, которыми в начале можно пренебречь - ошибки 5xx в главном потоке могут затронуть всех пользователей, может непредсказуемо вести себя под нагрузкой.
Но в целом, на самом деле хороший, современный проект, хоть какая-то альтернатива для связи.

«Ну вроде едет». Мой самописный мессенджер готов к публичной порке. Начнём?