Update API.md

This commit is contained in:
ChronosX88 2018-05-15 14:17:46 +03:00 committed by GitHub
parent b4746713a3
commit fe8088c258
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,13 +21,20 @@ API - ядро мессенджера. Достаточно подключить
Используется, чтобы установить связь с контактом. Тот кто хочет добавиться в друзья - отправляет такой запрос.
```json
{ "peerID":"*IPv6 контакта*", "action":"handshake" }
{
"peerID":"*IPv6 контакта*",
"action":"handshake"
}
```
ответ:
```json
{ "peerID":"*IPv6*", "action":"handshakeSuccess", "status": true }
{
"peerID":"*IPv6*",
"action":"handshakeSuccess",
"status": true
}
```
У другого абонента висит этот контакт в списке неавторизованных. Если он хочет его тоже добавить в друзья - отправляем ему свой handshake. Возможет вариант, когда сервер автоматически добавляет в друзья (публичный сервер для пересылки offline сообщений).
@ -37,13 +44,28 @@ API - ядро мессенджера. Достаточно подключить
Структура сообщения в JSON:
```json
{ "peerSender":"*IPv6*", "peerReceiver":"*IPv6*", "action":"send", "chatID":"*Идентификатор чата, у обоих он одинаковый*", "msgID":"*ID сообщения в чате*","msgText":"*сообщение*", "timestamp":"*время*", "enctype":"" }
{
"peerSender":"*IPv6*",
"peerReceiver":"*IPv6*",
"action":"send",
"chatID":"*Идентификатор чата, у обоих он одинаковый*",
"msgID":"*ID сообщения в чате*","msgText":"*сообщение*",
"timestamp":"*время*",
"enctype":""
}
```
ответ:
```json
{ "peerSender":"*IPv6 отправителя, т.е. кому доставили сообщение*", "peerReceiver":"*IPv6 получателя, т.е. кто отправил сообщение*", "action":"sendSuccess", "chatID":"*Идентификатор чата, у обоих он одинаковый*", "msgID":"*ID сообщения, которое доставлено, в чате*", "status": true }
{
"peerSender":"*IPv6 отправителя, т.е. кому доставили сообщение*",
"peerReceiver":"*IPv6 получателя, т.е. кто отправил сообщение*",
"action":"sendSuccess",
"chatID":"*Идентификатор чата, у обоих он одинаковый*",
"msgID":"*ID сообщения, которое доставлено, в чате*",
"status": true
}
```
Сообщение может должно быть зашифровано, метод шифрования указан в поле `enctype`.
@ -55,20 +77,29 @@ API - ядро мессенджера. Достаточно подключить
Если прошло время last_connect > 1 минуты, от отправляем запрос
```json
{ "peerID":"*IPv6*", "action":"ping" }
{
"peerID":"*IPv6*",
"action":"ping"
}
```
ответ:
```json
{ "peerID":"*IPv6*", "action":"pong" }
{
"peerID":"*IPv6*",
"action":"pong"
}
```
Если у нас есть сообщения для адреса и он онлайн (last_connect < 1 минуты), то передаём их.
Если для этого адрес в базе есть недоставленные сообщения, то отправляем такой запрос:
```json
{ "action":"history", "messages":[{},{},{}...] }
{
"action":"history",
"messages":[{},{},{}...]
}
```
ответ:
@ -86,13 +117,26 @@ API - ядро мессенджера. Достаточно подключить
Для ретрансляции можно также использовать свой сервер в интернете, нужно просто его добавить в контакты.
```json
{ "peerSender":"*IPv6*", "peerReceiver":"*IPv6*", "action":"resend", "chatID":"*Идентификатор чата, у обоих он одинаковый*", "msgID":"*ID сообщения в чате*","msgText":"*сообщение*", "timestamp":"*время*", "enctype":"" }
{
"peerSender":"*IPv6*",
"peerReceiver":"*IPv6*",
"action":"resend",
"chatID":"*Идентификатор чата, у обоих он одинаковый*",
"msgID":"*ID сообщения в чате*",
"msgText":"*сообщение*",
"timestamp":"*время*",
"enctype":""
}
```
Ответ:
```json
{ "peerID":"*IPv6*", "action":"resendSuccess","status":true }
{
"peerID":"*IPv6*",
"action":"resendSuccess",
"status":true
}
```
Если `status == 0` - то эта нода не желает пересылать сообщения и ей повторно отправлять не нужно.