Skip to content
szonovPublic

About

Неофициальный Go-клиент для работы с MAX через WebSocket.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

max

Неофициальная Go библиотека для работы с MAX через WebSocket API.

Проект не связан с MAX, VK и любыми другими правообладателями. Автор проекта не является сотрудником или представителем MAX. Все торговые марки принадлежат их владельцам.

Библиотека предоставляет минимальный набор компонентов для построения собственных приложений и сервисов поверх протокола MAX.

Возможности

  • WebSocket транспорт с автоматическим переподключением;
  • Поддержка heartbeat и контроля соединения;
  • RPC слой поверх MAX протокола;
  • Авторизация по токену;
  • Авторизация через QR-код;
  • Поддержка аккаунтов с облачным паролем (2FA);
  • Хранение сессии;
  • Получение событий протокола;
  • Независимые переиспользуемые пакеты transport, rpc, statestore и events.

Установка

go get github.com/szonov/max

Примеры

Примеры использования доступны в отдельном репозитории:

https://github.com/szonov/max-cli-example

Там можно найти:

  • авторизацию через QR-код;
  • сохранение сессии;
  • получение входящих событий;
  • консольные утилиты на основе библиотеки.

Архитектура

Проект состоит из нескольких независимых пакетов.

transport

Универсальный JSON WebSocket транспорт.

Возможности:

  • автоматическое переподключение;
  • heartbeat;
  • ограничение размера сообщений;
  • события подключения и отключения.

Пакет не содержит логики MAX протокола и может использоваться отдельно в других проектах.

rpc

RPC слой поверх transport.

Возможности:

  • запрос/ответ;
  • ожидание ответа по (opcode, seq);
  • таймауты;
  • обработка ошибок протокола.

statestore

Универсальное хранилище состояния.

В комплекте поставляется файловая реализация:

store := statestore.NewFileStore[Session]("session.json")

При необходимости можно реализовать собственный Store.

events

Минимальная реализация типизированных событий.

Используется внутри библиотеки, но может применяться и в других проектах.

maxclient

Минимальная реализация клиента MAX.

Поддерживает:

  • Hello;
  • LoginViaToken;
  • LoginViaQr;
  • Logout;
  • хранение сессии;
  • события авторизации;
  • получение входящих сообщений протокола.

Библиотека сознательно не содержит готовой реализации контактов, чатов и сообщений.

Данные протокола передаются приложению в виде json.RawMessage, а решение о том, какие структуры использовать и какие данные сохранять, остаётся за разработчиком.

Стабильность API

Библиотека находится в активной разработке.

До версии v1.0.0 публичный API может изменяться без сохранения обратной совместимости.

Лицензия

MIT

About

Неофициальный Go-клиент для работы с MAX через WebSocket.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages