Update main.md

This commit is contained in:
ChronosX88 2018-07-26 13:00:18 +03:00 committed by GitHub
parent 7100d5f9b5
commit 128e648ab9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,22 +1,13 @@
# Общая документация мессенджера Influence
## Структура мессенджера
Связь между узлами - точка-точка
GUI - API ==== API - GUI
GUI - примитивная программа под Linux/Windows/Android, которая умеет отображать сообщения и вызывать функции ядра (API).
API - ядро мессенджера. Достаточно подключить *main.hpp*, чтобы вызывать функции ядра. Такая структура позволяет писать какие угодно клиенты.
## Протокол обмена
Обмен сообщениями ведётся по UDP протоколу в формате JSON.
При любой успешной отправке данных обновляем поле last_connect у контакта.
Если пришло сообщение от контакта, которого нет в адресной книге - то оно отбрасывается.
При любой успешной отправке данных обновляем поле last_connect у контакта. (not implemented)
Если пришло сообщение от контакта, которого нет в адресной книге - то оно отбрасывается.
Исключения - запрос handshake.
### Добавление в друзья
### Добавление в друзья (not implemented)
Используется, чтобы установить связь с контактом. Тот кто хочет добавиться в друзья - отправляет такой запрос:
@ -32,8 +23,7 @@ API - ядро мессенджера. Достаточно подключить
```json
{
"action":"handshakeSuccess",
"peerID":"*IPv6*",
"status": true
"peerID":"*IPv6*"
}
```
@ -72,7 +62,7 @@ API - ядро мессенджера. Достаточно подключить
Если нет ответа, то сохраняем сообщение у себя в истории, чтобы потом переотправить.
`status == true` - доставлено.
### Пинг - проверка онлайна
### Пинг - проверка онлайна (not implemented)
Если прошло время last_connect > 1 минуты, от отправляем запрос
@ -113,7 +103,7 @@ API - ядро мессенджера. Достаточно подключить
В ответ приходит массив с `true` или `false`. Если `true` - сообщение успешно отправлено, `false` - сообщение недоставлено.
### Отправление сообщения для другого абонента (это нужно чтобы отправлять тем, кто в offline)
### Отправление сообщения для другого абонента (это нужно чтобы отправлять тем, кто в offline) (not implemented)
Если человек, которому мы отправляем сообщение offline - то, во-первых, оно сохраняется у себя на сервере, для последующей отправки.
Во-вторых, можно попросить какого-то друга его переотправить. Для этого выбираем случайно несколько друзей из списка контактов, у которых `can_resend == 1` и отправляем им запрос.