Две модели поставки: полный набор возможностей как облачный сервис или развёртывание на ваших серверах — аккаунты, сообщения и записи остаются во внутренней сети Весь стек на ваших серверах О развёртывании

Мгновенный обмен сообщениями (IM)

Шлюз постоянных соединений, Open API и доставка колбэков: личные и групповые чаты, чат-комнаты, супергруппы и системные уведомления. В слабой сети сообщения не теряются и не дублируются, а операции и аудит доступны в админ-панели.

FeiyanCloud IM: интерфейс чата на нескольких устройствах

Четыре блока вместе дают IM-систему

Канал сообщений, диалоги, связи и группы, SDK для разных платформ работают в связке — получается IM-система, которую можно отдавать в работу.

Канал сообщений

Шлюз соединений, Open API, Admin API и доставка колбэков работают вместе; отправка и приём не требуют опроса.

  • Постоянное соединение по своему протоколу, автоматическое переподключение
  • Open API покрывает все типы сообщений
  • Доставка колбэков синхронизирует статусы и бизнес-события

Диалоги

Пять форм диалога — личный чат, групповой чат, чат-комната, супергруппа и системные уведомления; типы сообщений от текста до собственных.

  • Текст, изображения, файлы, голос, геолокация и свои типы
  • Отметки о прочтении, отзыв сообщений, @упоминания, ответ с цитатой
  • Черновики, закрепление, роуминг истории и поиск по сообщениям

Связи и группы

Связи и управление группами закрыты целиком: собственную модель прав и связей строить не нужно.

  • Друзья, заявки, чёрные списки, статусы присутствия
  • Переименование, админы, заглушение, удаление, передача, объявления

SDK и IMKit

Web, Android, iOS, macOS, Flutter, React Native и мини-программа; UI-компоненты IMKit можно использовать сразу.

  • Один аккаунт, несколько устройств онлайн одновременно
  • IMKit даёт UI для диалогов, сообщений и контактов
  • Консоль и админ-панель для управления и аудита

Надёжная доставка и управляемый контент

Дело не только в отправке: надёжность доставки, качество диалога и модерация контента решаются вместе.

FeiyanCloud IM: интерфейс чата на десктопе

Ни потерь, ни дублей при смене сети

Шлюз соединений отвечает за отправку и приём; подтверждение приходит только после записи с тремя репликами. Клиент ведёт сквозной номер в каждом диалоге, после переподключения догружает пропущенное и отбрасывает дубли — поэтому при переключении сетей и завершении процесса сообщения не теряются и не показываются дважды.

  • Автоматическое переподключение, офлайн-сообщения ждут отправки
  • Три реплики хранения, согласованность и при перекосе в запись
  • Канал офлайн-push как резерв, даже если приложение не запущено
  • Доставка колбэков передаёт статусы сообщений в ваши системы
FeiyanCloud IM: интерфейс чата на смартфоне

Детали, которые нужны каждый день

От отметки о прочтении до ответа с цитатой: всё, что реально используется в переписке, уже встроено — после интеграции получается полноценный опыт общения.

  • Групповая отметка о прочтении в виде n/m, с детализацией по участникам
  • Отзыв сообщений, @упоминания, ответ с цитатой, черновики и закрепление
  • Роуминг истории и поиск по всем сообщениям
  • Чат-комнаты с высокой параллельностью и ограничением частоты сообщений
FeiyanCloud IM: управление группой и объявления

Контакты и группы под контролем

Заявки в друзья, чёрные списки, управление группой и фильтр слов собраны в одном интерфейсе и видны в админ-панели.

  • Заявки в друзья с подтверждением, чёрные списки и синхронизация статусов
  • Админ группы может переименовать, назначить админов, заглушить, удалить, передать
  • Объявление группы доходит до всех, системные уведомления заметнее
  • Фильтр слов и модерация: блокировать или заменять

Архитектура

Устройство держит одно постоянное соединение, сервер разделён по задачам, хранение и push независимы и масштабируются отдельно.

Слой доступа Клиентские SDK и UI-компоненты
WebAndroidiOSmacOSFlutterReact NativeМини-программакомпоненты IMKit
Сервисный слой Сообщения и связи
Шлюз соединенийСервис сообщенийСвязиСервис группМодерация контентаOpen APIAdmin APIДоставка колбэков
Хранилище и push Хранение и доставка
Хранилище сообщений (3 реплики)Роуминг историиКанал офлайн-pushСписок стоп-слов

Шлюз соединений и сервис сообщений масштабируются горизонтально; при частном развёртывании все три слоя остаются во внутренней сети вашего ЦОД.

Сначала одно сообщение, дальше — по шагам

Создайте приложение в консоли, получите AppID, подключите SDK и установите соединение — можно отправлять первое сообщение.

  • Создайте приложение в консоли, получите AppID и ключ, укажите адрес колбэков
  • Подключите SDK или UI-компоненты IMKit и замените интерфейс чата
  • С сервера вызывайте Open API: системные уведомления, группы и связи

Полное руководство по интеграции — в документации, SDK для всех платформ — в разделе загрузки SDK.

im-quick-start.ts TypeScript
import FeiyanIM from '@feiyan/im-sdk';

// 1. Init: get the AppID from the app details in the console
const im = FeiyanIM.init({ appId: 'YOUR_APP_ID' });

// 2. Connect (auto-reconnect after a drop, offline messages are re-delivered)
await im.connect({ userId: 'user_1001', token });

// 3. Send a message: one API for direct chats, groups and chat rooms
await im.sendMessage({
  target: 'group_2001',
  type: 'text',
  content: 'Hello, FeiyanCloud',
});

// 4. Listen for messages and read receipts
im.on('message', (msg) => console.log(msg));
im.on('readReceipt', (r) => {
  console.log(`${r.readCount}/${r.totalCount}`, r.readUserIds);
});

Частые вопросы перед интеграцией

Больше технических деталей — в документации или в заявке в поддержку.

Как сообщения не теряются и не дублируются?
Шлюз соединений передаёт сообщение в сервис сообщений, и подтверждение отправляется только после успешной записи с тремя репликами. Клиент ведёт возрастающий номер для каждого диалога, после переподключения догружает пропущенное и убирает дубли. Поэтому при смене сети или завершении процесса сообщения не теряются и не показываются дважды.
Какие типы сообщений поддерживаются и можно ли свои?
Встроены текст, изображения, файлы, голос, геолокация и системные уведомления. Дополнительно можно задать собственный тип: тело сообщения и его отображение определяете вы, сервер только передаёт и хранит — подходит для карточек заказов и rich-карточек.
Как считается отметка о прочтении в группе?
В групповом чате показывается n/m — прочитали n из m участников, а детали по прочитавшим можно получить через интерфейс. В личном чате просто фиксируется время прочтения. Оба статуса передаются в вашу админ-панель через колбэки.
Сколько хранится роуминг истории?
В облаке срок задаётся тарифом и настраивается в консоли, а история читается постранично через Open API. При частном развёртывании хранение и правила роуминга лежат в вашей базе данных, и срок хранения вы определяете сами.
Как синхронизируются сообщения при нескольких устройствах?
Один аккаунт может быть онлайн на Web, мобильном и десктопе одновременно. Отправка или прочтение на одном устройстве вызывает событие в онлайн-канале, а устройства без соединения догружают пропущенное по номеру при следующем подключении — состояние диалогов совпадает.
IM можно использовать отдельно или только вместе с RTC?
IM и видео в реальном времени — независимые продукты, их можно подключать по отдельности. Если нужен звонок прямо из диалога, используйте возможности RTC: аккаунт и аутентификация остаются общими.

Скриншоты продукта

Интерфейс и админка — один продукт

Групповой чат: упоминания @, объявления группы и счётчики прочтений Прочитали 2 из 7, 8 участников и заглушка отозванного сообщения — всё в реальном диалоге
Список чатов на телефоне Значки непрочитанного, закреплённые чаты, черновики и системные уведомления
Совещание на телефоне Звонок 1:1: удалённое видео крупно, своё превью в маленьком окне
Демонстрация экрана Показываем дашборд консоли, справа остаются видео участников

Первое сообщение за 30 минут

Бесплатного тарифа достаточно для разработки и отладки; при запуске перейдите на тариф по нагрузке.

Оставьте контакты — пришлём решение и стоимость

Инженер отдела продаж уточнит сценарий, нагрузку и окружение и, как правило, ответит в течение одного рабочего дня.

Поля со * обязательны; данные используем только для этого обращения.