Skip to content

Instantly share code, notes, and snippets.

@ognev-zair
Created July 24, 2017 12:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ognev-zair/b0ae08d6a516ac05d8cd7c81cc36babd to your computer and use it in GitHub Desktop.
Save ognev-zair/b0ae08d6a516ac05d8cd7c81cc36babd to your computer and use it in GitHub Desktop.
Предлагаем: 1. Сделать либу на яве, с функциями, которые будут дергаться из реакта, эта либа нам понадобится также в дальнейшем для версии pro.
[4:16]
2. Сделаем сервис, который будет работать в бекграунде, и через DeviceEmmiter (react) будем передавать евенты, когда придут сообщения туда-сюда(react-android-react)
[4:16]
3. Развернуть собственный сервер и имплементировать необходимый функционал на нем для бекграунда
[4:17]
Я закончил, жду критической оценки :slightly_smiling_face:
[4:19]
@dimmetrius предлагаюю обсудить функционал react-android-react, ты ведь уже разбирался с чатами. Прикинуть что нам будет нужно.
int64 [4:21 PM]
а на сколько долго будет получить тот же функционал, который уже сейчас есть? и как там с безопасностью?
[4:21]
libsignal вообще чисто создан для децентрализированной системы
ognev [4:22 PM]
http://www.hivemq.com/blog/mqtt-security-fundamentals-payload-encryption
HiveMQ
MQTT Security Fundamentals: MQTT Payload Encryption
This post explains why and when MQTT payload encryptions should be used, how it works and what the advantages and disadvantages are.
Jun 1st, 2015 at 12:00 PM
gritsay [4:22 PM]
поскольку в нашем варианте не пахнет децентрализованной системой (сообщения должны быть на сервере), этот вариант сразу отпадает
int64
[4:23 PM]
ну это в данный момент да
[4:24]
надо смотреть по сложности, я очень много времени провозился с libsignal
[4:24]
но тут конечно же подгонка сервера и самой библиотеки под централизацию
[4:26]
а еще вопрос, как там с документацией? можете скинуть саму библиотеку на Java
ognev [4:27 PM]
https://github.com/eclipse/paho.mqtt.java (edited)
3 replies Last reply today at 4:31 PM View thread
ognev [4:27 PM]
https://github.com/mqtt/mqtt.github.io/wiki (edited)
gritsay [4:29 PM]
по скорости реализации надо смотреть комплексно
[4:29]
сервер - java -react
[4:29]
поэтому надо всем оцениться сейчас
[4:30]
скажу сразу что написание клиента для android не займет много времени
int64
[4:30 PM]
я даже не знаю мне сложно сейчас оценить )) выглядит вроде не сложно, но тут наверное снова нужно будет заморочиться с сохранением ключей на сервере, а как на счет аттачментов? сейчас к примеру аттачменты храняться на Google Cloud Storage
gritsay [4:31 PM]
вот этот вопрос сейчс смотрим
anton
[4:31 PM]
:ok_hand:
gritsay [4:35 PM]
по поводу синхронизации в google аттачментов -> можно сделать метод на сервере, который и х все будет туда лить, как вариант
int64
[4:35 PM]
ну да в принципе, это не долго в принципе даже сделать
[4:36]
но наверное нужна какая-то привзяка к attachmentId, т.е. эти аттачменты надо хранить опять же где-то, ну в принципе снова сервер отдельно можно накатить
[4:36]
документация у них выглядит намного лучше конечно
ognev [4:36 PM]
MQTT has an architected limit of 256MB for the message payload
1 reply Today at 4:37 PM View thread
gritsay [4:37 PM]
ждем мнения @mgrachev и @dimmetrius по этому вопросу
anton
[4:37 PM]
а что с протоколом из Aktor, ребят,
[4:37]
?
gritsay [4:38 PM]
не подходит само их решение
[4:38]
оно не гибкое
ognev [4:38 PM]
Актор кстати не подходит
int64
[4:38 PM]
> MQTT has an architected limit of 256MB for the message payload
а зачем такой большое payload, если на Google Storage будут аттачменты, то это не проблема
gritsay [4:38 PM]
Заир лучше пояснит
[4:38]
он эту либу исследовал
int64
[4:39 PM]
вообще может и лучше будет перейти сейчас на нее, с libsignal постоянно какие-то проблемы возникают, но тогда не понятно чем я вообще все это время занимался :))
ognev [4:39 PM]
я запустил их семпл с гитхаба там 2 строки которая вызывает сдк, сдк в свою очередь уже открывает окна логина и чата. Эти окна
1. нельзя кастомизировать
2. нельзя использовать свои.
[4:40]
также сдк не дает никаких методов кроме запуска их активити и смены эндпоинта
[4:40]
в отличие от ios версии, там есть кастомизация вьюшек
alexzuev
[4:40 PM]
Это эктор?
ognev
я запустил их семпл с гитхаба там 2 строки которая вызывает сдк, сдк в свою очередь уже открывает окна логина и чата. Эти окна
1. нельзя кастомизировать
2. нельзя использовать свои.
Direct MessageToday at 4:39 PM
ognev [4:40 PM]
да
int64
[4:41 PM]
а что вообще по функционалу в библиотеке имеется?
[4:42]
какие основные фичи
[4:42]
к пример сохранение истории все равно придется в ручную делать?
ognev [4:42 PM]
да, на серверной стороне надо подписаться к топику и прослушивать сообщения
[4:42]
и сохранять уже в любую базу данных на ваш выбор
int64
[4:43 PM]
а статусы у сообщений?
[4:43]
ну т.е. получается пока, что такая же библиотека как libsignal
[4:44]
ну разве что наверное прослушивает сообщения по другому, не простой долбежкой сервера каждую минуту, как это в libsignal
gritsay [4:45 PM]
про статусы хороший вопрос, Андрей, смотрим
[4:45]
забыли этот момент
anton
[4:46 PM]
статусы сообщений, онлайн ли пользователь, функционал “is typing”
gritsay [4:49 PM]
Про статусы сообщений, нашел трехгодовалый пост на гитхабе https://stackoverflow.com/questions/19057835/how-to-find-connected-mqtt-client-details
stackoverflow.com
How to Find Connected MQTT Client Details
Is there any way we can find about all the connected client details(IP & name) from another client? I know there is a topic "$SYS/broker/clients/active" which gives the number of currently conn...
[4:49]
typing смотрим как реализовать
ognev [4:50 PM]
а про is typing это просто еще один event к которому подпишутся два или более юзера
1 reply Today at 4:51 PM View thread
gritsay [4:50 PM]
т.е. онлайн/офлант - возможно сделать, - задача серверного разработчика.
ognev [4:52 PM]
вот еще про статусы отправленных сообщений http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels (edited)
anton
[4:52 PM]
У меня сейчас вопрос о целесообразности введения нового протокола для лайт версии.
Какое у нас может быть расчётное время переезда?
gritsay [4:53 PM]
Резонный вопрос, правильный.
[4:53]
Предлагаю дождаться оценок react и серверного разработчиков (edited)
[4:54]
К тому же, то что мы сделаем сейчас, сразу подойдет для pro версии.
[4:55]
а если в лайт версии нужно ограничить функционал принципиально, так это пожалуйста.
[4:56]
нет проблем
[4:56]
урежем
anton
[5:01 PM]
Давайте тогда ещё раз напишем что нужно нам от @mgrachev Бенкенд и @dimmetrius реакт, а то я сам запутался уже
int64
[5:05 PM]
от backend нужно будет сделать хранилище attachment'ов, я думаю подобное хранилище будет очень просто сделать
gritsay [5:08 PM]
также от backend нужно развернуть сервер сообщений на базе протокола mqtt, перечень либ тут https://github.com/mqtt/mqtt.github.io/wiki/libraries
[5:08]
Также посмотреть вопрос по статусу юзеров (активный/неактивный)
[5:09]
от @dimmetrius - обсудить что ему отдавать в реакт и что принимать от него. Но вещи, впринципе, очевидные.
mgrachev [5:26 PM]
Сделать хранилище attachments не долго, но вот поднять сервер - не могу даже назвать примерные сроки, т.к. не работал с этим. Но мне кажется это займет очень много времени.
gritsay [5:28 PM]
на чем бекэнд реализован?
[5:28]
язык программирования
[5:28]
@mgrachev
mgrachev [5:29 PM]
О чем идет речь? Я лишь посмотрел библиотеку для mqtt на Go и все.
[5:29]
Про какой бекэнд идет речь?
gritsay [5:30 PM]
понятно
[5:31]
а если поднять через docker?
[5:31]
https://github.com/flaviostutz/mosquitto
GitHub
flaviostutz/mosquitto
mosquitto - Docker container for MQTT Server Mosquitto. Open ports for Websockets and native MQTT connections.
mgrachev [5:32 PM]
За поднятие серверов у нас отвечает @kirill0v. Нужно у него спросить.
gritsay [5:32 PM]
Понял, спасибо, спросим
[5:34]
т.е. если сервер будет, то для бекенда останется у нас функционал - статуты контактов (онлайн/офлай), typing, Что я еще забыл?
int64
[5:35 PM]
> typing
разем это backend?
ognev [5:35 PM]
впринципе это можно p2p сделать typing (edited)
int64
[5:36 PM]
> Что я еще забыл?
аттачменты
gritsay [5:37 PM]
да
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment