Add Home
commit
3f2016e9f0
58
Home.md
Normal file
58
Home.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# Документация протокола 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-детектора при длительной передаче тонов.
|
||||
Reference in a new issue