From 3e14163bdddede9e31f7d64a0220d83b66cf3721 Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Sun, 13 May 2018 18:03:39 +0300 Subject: [PATCH] Update API.md --- doc/ru/API.md | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/doc/ru/API.md b/doc/ru/API.md index f1072b8..9ac911a 100644 --- a/doc/ru/API.md +++ b/doc/ru/API.md @@ -4,28 +4,14 @@ Связь между узлами - точка-точка -GUI - Сервер ==== Сервер - GUI +GUI - API ==== API - GUI -GUI - примитивная программа под Linux/Window/Android, которая умеет отображать сообщения и обмениваться с сервером. -Сервер - как правило сидит на localhost, принимает сообщения от GUI и переправляет на другой сервер. -В Windows/Linux GUI и серверная часть могут быть объединены. -Разделение GUI и Сервера позволяет также отправлять сообщения тем, кто оффлайн (например сервер крутится на роутере и он всё время online). -На сервере также хранится история переписки. - -У сервера есть список контактов (друзей), в формате: - -```json -{ - "адрес1": { "nick":"", "last_online":"", "last_connect":"", "can_resend":1, "key":"", "other_info":... } - ... -} -``` - -Поле адрес - это адрес сервера, куда отправляем. Может быть как ipv4, так и ipv6 адрес в сети cjdns. +GUI - примитивная программа под Linux/Window/Android, которая умеет отображать сообщения и вызывать функции ядра (API). +API - ядро мессенджера. Достаточно подключить *main.cpp*, чтобы вызывать функции ядра. ## Протокол обмена -Обмен сообщениями ведётся по GET/POST http протоколу в формате JSON, что позволяет делать GUI прямо в браузере. +Обмен сообщениями ведётся по UDP протоколу в формате JSON. При любой успешной отправке данных обновляем поле last_connect у контакта. Если пришло сообщение от контакта, которого нет в адресной книге - то оно отбрасывается. Исключения - запрос handshake. @@ -35,13 +21,13 @@ GUI - примитивная программа под Linux/Window/Android, к Используется, чтобы установить связь с контактом. Тот кто хочет добавиться в друзья - отправляет такой запрос. ```json -{ "action":"handshake", "peerID": "*IPv6 контакта*" } +{ "peerID":"*IPv6 контакта*", "action":"handshake" } ``` ответ: ```json -{ "status": 1 } +{ "peerID":"*IPv6*", "action":"handshakeSuccess","status": 1 } ``` У другого абонента висит этот контакт в списке неавторизованных. Если он хочет его тоже добавить в друзья - отправляем ему свой handshake. Возможет вариант, когда сервер автоматически добавляет в друзья (публичный сервер для пересылки offline сообщений).