Открытый протокол обмена данными MyChat

Официальное описание

Copyright (c) 2012-2023 by Alexey Pikurov / Network Software Solutions

 

Все команды разделены на два типа: "клиент - сервер" и "сервер - клиент". Команды первого типа начинаются с префикса "cs" (Client->Server), второго - наоборот - "sc" (Server->Client). Названия номинальны, на самом деле вместо этих текстовых констант будут шестнадцатеричные текстовые коды.

 

Каждая команда состоит из нескольких частей:

1.MagicString - 2 байта #23#6

2.идентификатор команды, HEX код в текстовом виде, 4 байта (закодировано 2 байта);

3.флаги, HEX код в текстовом виде, 2 байта (закодирован 1 байт);
1-й бит: пакет сжат GZIP-ом или нет. "1" - сжат, "0" - нет.
2-й, 3-й и 4-й биты: класс команды отправителя. По умолчанию - "000" (ядро программы), остаётся без изменения и после обработки команды, этот код высылается и обратно, вместе с результатом,   если таковой есть. Классами команд могут быть:
"000" - ядро программы;
"001" - текстовая консоль;
"010" - Plugins API;
"100" - Scripts API;
"011" - Integration API;
"111" - Custom API (5.2+);
"110", "101" - зарезервировано для будущих расширений;
биты 5, 6, 7 и 8 - зарезервированы;

4.непосредственно сам JSON объект. Если он был упакован GZIP, то объект будет текстовой строкой, закодированной в BASE64, если сжатия нет - будет строка в открытом виде.

5.CRLF (#13#10) - завершающий блок (2 байта).

 

Все параметры в командах номинальны и даны для примера. Все параметры обязательны.

 

Полный протокол находится на официальном сайте и обновляется от версии к версии.