Чат в мобильном приложении: realtime, сокеты и выбор между SDK и своей разработкой
Чат в мобильном приложении строят двумя способами: подключают готовый SDK (Sendbird, Stream, CometChat) или Firebase — это 3–5 недель работы и от 1,2 млн ₸, либо разрабатывают собственный сервер на WebSocket — от 2,5 месяцев и от 5 млн ₸. SDK выигрывает по скорости запуска, своя разработка — на масштабе и при жёстких требованиях к хранению данных.
Почему чат сложнее, чем кажется
Снаружи чат — это список сообщений и поле ввода. Внутри — распределённая система, которая обязана доставить сообщение за доли секунды, пережить обрыв сети в метро, синхронизировать историю между телефоном и планшетом и разбудить приложение push-уведомлением, когда система выгрузила его из памяти. Каждая задача по отдельности решаема, но вместе они образуют один из самых трудоёмких модулей в разработке мобильных приложений.
Команда Applications.kz с 2007 года выпустила более 300 проектов для Казахстана, ОАЭ и Таиланда, и чаты встречались нам в маркетплейсах, сервисах доставки, медицинских и образовательных продуктах. Главный вывод за эти годы: ошибка в выборе архитектуры чата обходится в три-четыре раза дороже, чем неделя, потраченная на её обдумывание. Поэтому ниже — механика realtime, честный разбор готовых SDK и собственной разработки, без маркетинговых упрощений.
Как работает realtime: сокеты против опросов
Обычное приложение общается с сервером по схеме «запрос — ответ»: HTTP-запрос ушёл, JSON вернулся, соединение закрылось. Для чата эта модель не годится — сервер не может сам «постучаться» в телефон, когда собеседник что-то написал.
Варианты решения, от худшего к лучшему:
- Short polling — приложение каждые 3–5 секунд спрашивает сервер «есть новое?». Просто реализовать, но тысячи пустых запросов греют батарею и нагружают бэкенд впустую.
- Long polling — запрос «висит» открытым, пока серверу нечего ответить. Задержки меньше, но каждое ожидание занимает соединение, и под нагрузкой схема разваливается.
- WebSocket — постоянный двунаправленный канал: одно TCP-соединение, по которому обе стороны отправляют данные в любой момент. Это отраслевой стандарт для чатов, задержка доставки — десятки миллисекунд.
«Голый» WebSocket в продакшене почти не используют — берут обвязку, которая добавляет каналы, подписки и восстановление сессии: Socket.IO в Node.js-экосистеме, Centrifugo (Go-сервер с presence и историей из коробки) или MQTT, если чат соседствует с IoT-устройствами.
Что ломается именно в мобильных сетях
Главная боль мобильного realtime — нестабильность канала. Телефон переключается с Wi-Fi на LTE и получает новый IP, оператор рвёт «молчащие» соединения через 30–60 секунд, Android-режим Doze замораживает фоновую сеть. Зрелый чат-клиент обязан уметь четыре вещи: heartbeat-пинги каждые 20–25 секунд, переподключение с экспоненциальной задержкой и восстановлением подписок, локальную очередь неотправленных сообщений и докачку пропущенной истории после реконнекта. Если в смете подрядчика этих пунктов нет — чат будет «терять» сообщения, и пользователи это заметят быстрее, чем аналитика.
Готовые чат-SDK: варианты и реальные цены
Готовый SDK — это чужая инфраструктура (сокеты, хранение, доставка) плюс клиентские библиотеки под iOS, Android и Flutter. Вы платите подписку и встраиваете интерфейс в своё приложение.
- Sendbird — самый зрелый игрок: треды, модерация, перевод сообщений, звонки. Тарифы стартуют примерно от $399 в месяц (~215 000 ₸) за 5 000 MAU и растут ступенями.
- Stream Chat — сильнейшие SDK для Flutter и React Native, гибкая фильтрация каналов. Ценовой порядок тот же — от ~$399 в месяц, у стартапов есть шанс на льготный тариф.
- CometChat — бюджетная альтернатива: вход от ~$109 в месяц (~59 000 ₸), функций меньше, но для саппорт-чата и простых диалогов достаточно.
- Firebase (Firestore + FCM) — формально не чат-SDK, а realtime-база данных: слушатели Firestore сами доставляют обновления, свои сокеты писать не нужно. Для чата на одну-две тысячи пользователей это самый дешёвый вход — оплата по факту использования, на старте укладывается в 5 000–30 000 ₸ в месяц. Механику и ограничения платформы мы детально разобрали в статье о Firebase для мобильного приложения.
Подводные камни у всех SaaS-чатов общие. Цена растёт нелинейно: на 50 000 активных пользователей счёт легко переваливает за 1,5–2 млн ₸ в месяц. Переписка хранится на серверах вендора за пределами Казахстана. Кастомизация упирается в то, что предусмотрел поставщик: нестандартный сценарий вроде аукционных ставок в диалоге придётся «приклеивать» костылями.
Собственный чат-сервер: когда он оправдан
Свой чат — это ваш WebSocket-сервер и ваша база. Типовой стек, который мы применяем: Go или Node.js для бизнес-логики, Centrifugo как сокет-ядро, Redis для pub/sub и статусов «онлайн», PostgreSQL для истории, S3-совместимое хранилище для медиафайлов.
Собственная разработка оправдана, когда выполняется хотя бы одно условие:
- переписку нужно хранить в Казахстане — требование закона РК «О персональных данных и их защите» плюс отраслевые регламенты для финтеха и медицины;
- чат — ядро продукта с нестандартной логикой: торги, платные консультации с поминутной тарификацией, сценарные боты;
- прогноз аудитории — от 30–50 тысяч MAU: подписка на SDK на этих объёмах дороже собственной инфраструктуры;
- недопустим vendor lock-in — миграция многолетней переписки с SaaS-платформы превращается в отдельный болезненный проект.
Плата за независимость — инженерная ответственность: масштабирование, мониторинг, бэкапы и дежурства теперь ваши. VPS-инфраструктура под чат на 10–20 тысяч пользователей обходится в 40 000–120 000 ₸ в месяц — заметно дешевле подписок, но требует DevOps-сопровождения.
SDK или своя разработка: сравнение
| Критерий | Готовый SDK | Свой сервер на WebSocket |
|---|---|---|
| Срок запуска | 3–6 недель | 2,5–4 месяца |
| Бюджет разработки | 1,2–3,5 млн ₸ | 5–12 млн ₸ |
| Ежемесячные расходы при 50 000 MAU | от 1,5 млн ₸ подписки | 100 000–250 000 ₸ инфраструктуры |
| Где хранятся данные | серверы вендора (США/ЕС) | любой дата-центр, включая Казахстан |
| Кастомизация логики | в рамках API вендора | без ограничений |
| Риск vendor lock-in | высокий | отсутствует |
| Кому подходит | MVP, саппорт-чат, проверка гипотезы | продукт с чатом в ядре, регулируемые отрасли, масштаб |
Рабочая стратегия для многих продуктов — гибридная: запуститься на SDK или Firebase, проверить, что чатом вообще пользуются, и переезжать на свою инфраструктуру, когда экономика это оправдает. Важно лишь с первого дня изолировать чат за собственным слоем API, чтобы переезд не означал переписывание всего приложения.
Из чего состоит боевой чат кроме сокетов
Сокеты — только транспорт. Полноценный модуль включает ещё шесть подсистем, и именно они занимают большую часть сметы:
- Push-уведомления через FCM и APNs — без них пользователь узнаёт о сообщении, только открыв приложение; сокет в фоне операционные системы закрывают;
- статусы доставки — «отправлено / доставлено / прочитано» и индикатор набора текста: мелочь для пользователя, отдельный поток событий для разработчика;
- история с пагинацией и поиском — на сотнях тысяч сообщений наивные запросы к базе перестают работать, нужны индексы и курсорная подгрузка;
- медиафайлы — сжатие фото на клиенте, фоновая отправка, превью и докачка после обрыва;
- модерация — жалобы, бан-листы, фильтр контента: App Store отклоняет приложения с пользовательским контентом без инструментов модерации (Guideline 1.2);
- панель оператора — просмотр диалогов, ответы от имени поддержки, выгрузка статистики. Как проектировать такой интерфейс, мы разобрали в материале про админ-панель для приложения.
Сколько стоит чат в приложении в Казахстане
Ориентиры Applications.kz на 2026 год — вилки зависят от набора функций, а не от «жадности» подрядчика:
- чат на Firebase в составе MVP (диалоги один на один, текст и фото, push) — 1,2–2 млн ₸, 3–4 недели;
- интеграция Sendbird или Stream с интерфейсом под ваш дизайн — 1,8–3,5 млн ₸, 4–6 недель, плюс подписка вендору;
- собственный сервер с группами, статусами, медиа, модерацией и админкой — 5–12 млн ₸, 2,5–4 месяца;
- сопровождение и инфраструктура после запуска — от 80 000 ₸ в месяц.
Вилки честные в обе стороны: компактный саппорт-чат реально уложить в нижнюю границу, а если нужны аудиозвонки или сквозное шифрование — закладывайте бюджет выше верхней и дополнительный месяц на тестирование.
Applications.kz разрабатывает мобильные приложения с 2007 года: офис в Алматы, более 300 проектов для рынков Казахстана, ОАЭ и Таиланда. Опишите задачу по телефону +7 (707) 928-13-15 — команда под руководством директора Ивана Калиты подготовит смету с архитектурным решением за 24 часа.
Частые вопросы
Можно ли сделать чат вообще без сокетов, только на Firebase?
Да. Слушатели Firestore сами держат соединение с облаком и доставляют обновления в реальном времени — для диалогов «клиент — менеджер» и небольших сообществ этого достаточно. Ограничения проявятся позже: стоимость растёт с числом чтений, а статусы «печатает» и «онлайн» придётся собирать вручную. До нескольких тысяч активных пользователей это самый быстрый и дешёвый вариант.
Сколько времени занимает интеграция готового SDK?
В среднем 4–6 недель. Неделя уходит на серверную связку — выдачу токенов авторизации и приём webhook-событий, две-три недели на интерфейс под ваш дизайн (стандартный UI вендора почти никогда не оставляют), ещё неделя — на push-уведомления, офлайн-сценарии и тестирование на нестабильной сети.
Выдержит ли собственный чат 100 000 пользователей?
Да, при правильной архитектуре. Centrifugo на одной средней машине держит десятки тысяч одновременных соединений, а горизонтальное масштабирование через Redis добавляет узлы без переписывания кода. Критичнее другое: база истории сообщений должна быть спроектирована под рост с первого дня — переделывать схему на живых данных в разы дороже.
Как чат влияет на расход батареи?
Правильно настроенный WebSocket почти не тратит энергию: соединение простаивает, а редкие heartbeat-пинги дешевле периодических HTTP-опросов в десятки раз. Батарею съедают ошибки реализации — агрессивные реконнекты в цикле и polling «на всякий случай». В фоновом режиме сокет закрывают полностью и полагаются на push через FCM и APNs.
Обязательно ли хранить переписку на серверах в Казахстане?
Если в сообщениях есть персональные данные граждан РК, закон «О персональных данных и их защите» требует хранения на территории страны. Для саппорт-чата интернет-магазина это уже повод выбирать архитектуру с собственной базой; для финтеха и медицины — жёсткое требование, которое сразу исключает большинство зарубежных SaaS-чатов.