Update API.md

This commit is contained in:
ChronosX88 2018-05-13 20:04:00 +03:00 committed by GitHub
parent 3e14163bdd
commit ba84a53fdb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,12 @@
# Протокол обмена.
## Структура сети:
## Структура сети
Связь между узлами - точка-точка
GUI - API ==== API - GUI
GUI - примитивная программа под Linux/Window/Android, которая умеет отображать сообщения и вызывать функции ядра (API).
GUI - примитивная программа под Linux/Window/Android, которая умеет отображать сообщения и вызывать функции ядра (API).
API - ядро мессенджера. Достаточно подключить *main.cpp*, чтобы вызывать функции ядра.
## Протокол обмена
@ -27,7 +27,7 @@ API - ядро мессенджера. Достаточно подключить
ответ:
```json
{ "peerID":"*IPv6*", "action":"handshakeSuccess","status": 1 }
{ "peerID":"*IPv6*", "action":"handshakeSuccess", "status": true }
```
У другого абонента висит этот контакт в списке неавторизованных. Если он хочет его тоже добавить в друзья - отправляем ему свой handshake. Возможет вариант, когда сервер автоматически добавляет в друзья (публичный сервер для пересылки offline сообщений).
@ -37,31 +37,31 @@ API - ядро мессенджера. Достаточно подключить
Структура сообщения в JSON:
```json
{ "action":"send", "from":"адрес", "to":"адрес", "message":"сообщение", "timestamp":"время", "enctype":"" }
{ "peerSender":"*IPv6*", "peerReceiver":"*IPv6*", "action":"send", "msgID":"*ID сообщения в чате*","msgText":"*сообщение*", "timestamp":"*время*", "enctype":"" }
```
ответ:
```json
{ "status": 1 }
{ "peerSender":"*IPv6 отправителя, т.е. кому доставили сообщение*", "peerReceiver":"*IPv6 получателя, т.е. кто отправил сообщение*", "action":"sendSuccess", "msgID":"*ID сообщения, которое доставлено, в чате*", "status": true }
```
Сообщение может быть зашифровано, метод шифрования в поле enctype.
Сообщение может должно быть зашифровано, метод шифрования указан в поле `enctype`.
Если нет ответа, то сохраняем сообщение у себя в истории, чтобы потом переотправить.
`status==1` - доставлено, другой - недоставлено (помечаем как недоставлено
`status == true` - доставлено.
### Пинг - проверка онлайна
Если прошло время больше чем last_connect + 1 минута, от отправляем запрос
Если прошло время last_connect > 1 минуты, от отправляем запрос
```json
{ "action":"ping" }
{ "peerID":"*IPv6*", "action":"ping" }
```
ответ:
```json
{ "action":"pong" }
{ "peerID":"*IPv6*", "action":"pong" }
```
Если у нас есть сообщения для адреса и он онлайн (last_connect < 1 минуты), то передаём их