1 Home
lohrrrr edited this page 2026-05-18 23:49:35 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Документация протокола AcoustiOverSocket (AoS) и клиента TyChat

Добро пожаловать в официальную техническую Wiki проекта. Данная страница предназначена для разработчиков и пользователей, тестирующих мессенджер TyChat и протокол передачи данных AoS.


1. Архитектура и принцип работы

Протокол AcoustiOverSocket разработан как гибридное решение, объединяющее сетевую транспортную модель Socket и акустический метод кодирования информации, вдохновленный технологией rtty.

Схема передачи пакета:

  1. Ввод: Отправитель вводит текстовое сообщение (лимит — 100 символов).
  2. Модуляция: Клиент преобразует ASCII-коды символов в последовательность звуковых тонов.
    • Базовая частота (Base Frequency): 600 Гц
    • Шаг частоты (Frequency Step): 25 Гц за каждый шаг ASCII-кода.
    • Длительность тона: 0.1 секунды.
  3. Транспорт: Сгенерированный аудиопоток конвертируется в байты, кодируется в Base64 и пересылается через сервер ретрансляции по протоколу WebSocket.
  4. Демодуляция: Получатель декодирует Base64, воспроизводит аудиосигнал через sounddevice и одновременно выполняет быстрое преобразование Фурье (FFT) для восстановления исходного текста.

2. Инструкция по управлению

Интерфейс построен на базе библиотеки prompt_toolkit и оптимизирован для работы исключительно с клавиатуры для обеспечения стабильности в эмулируемых терминалах (включая Termux на Android).

  • Tab — переключение фокуса ввода между списком чатов и полем сообщения.
  • Стрелка Вверх / Стрелка Снизу — перемещение по списку контактов (фокус должен быть на панели чатов). Чат открывается автоматически при наведении.
  • Ctrl + C — экстренное завершение работы приложения.

3. Поддерживаемые команды и синтаксис

Все команды вводятся непосредственно в основное поле ввода сообщения:

Команда Описание Пример использования
/exit Корректный выход из клиента с закрытием сокетов. /exit
/help Вызов данной страницы документации. /help
/add <UIN> Добавление идентификатора пользователя в локальный ростер. /add 192834
/alert <текст> Отправка сообщения с флагом триггера внимания (статус [!]). /alert Срочно в сеть
s/старый/новый Потоковый редактор (sed-style) для правки последнего сообщения. s/привет/приветствую

4. Локальное хранение и кэширование (Preserved)

Клиент работает по принципу максимальной децентрализации истории:

  • settings.json — содержит конфигурацию подключения, учетные данные, локальный список контактов и полную историю переписки. Если удалить этот файл, клиент запустится в режиме первичной настройки.
  • Режим ожидания (Preserved): Если вы отправляете сообщение пользователю со статусом Offline, пакет не пропадает. Он помещается в локальную очередь отправки внутри settings.json. Фоновый поток проверки статусов автоматически отправит накопленный стек сообщений, как только удаленный UIN появится в сети, при условии, что ваш клиент остается открытым.

5. Известные ограничения и безопасность

  1. Отсутствие шифрования: Текущая тестовая версия протокола AoS передает данные в открытом виде. Не используйте клиент для передачи конфиденциальной информации.
  2. Акустический шум: Во время приема и передачи сообщений интерфейс задействует звуковую карту. Рекомендуется снизить общую громкость приложения в микшере ОС перед началом сессии.
  3. Лимит символов: Максимальная длина одного пакета жестко ограничена 100 символами для предотвращения рассинхронизации FFT-детектора при длительной передаче тонов.