mirror of
https://github.com/ChronosX88/Influence-cjdns.git
synced 2024-11-08 08:51:00 +00:00
Update API.md
This commit is contained in:
parent
3e14163bdd
commit
ba84a53fdb
@ -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 минуты), то передаём их
|
||||
|
Loading…
Reference in New Issue
Block a user