Розробка WebSocket API для мобільного додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Розробка WebSocket API для мобільного додатку
Середній
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Розробка WebSocket API для мобільного застосунку

WebSocket API для мобільного застосунку проектується інакше, ніж для веб-клієнта. Головне відмінність — мобільний застосунок постійно втрачає з'єднання: переключення мереж, Doze Mode на Android, фоновий режим iOS. API має бути спроектований так, щоб клієнт міг переподключитися та отримати все пропущене без втрат.

Протокол поверх WebSocket

Raw WebSocket — це транспорт, не протокол. Поверх нього потрібно визначити формат повідомлень:

{
  "type": "message.new",
  "id": "uuid-v4",
  "payload": { ... },
  "timestamp": 1711234567890
}

type — маршрутизація на клієнті. id — ідемпотентність: клієнт ігнорує дублі при переподключенні. timestamp — для синхронізації стану.

Популярні протоколи поверх WebSocket: STOMP (добре працює з Spring Boot, багата екосистема клієнтів), Socket.IO (підтримка fallback на polling, кімнати з коробки, але привязує до JS-екосистеми), власний протокол (максимальний контроль, але більше роботи на всіх рівнях).

Reconnect та відновлення стану

Клієнт має переподключуватися автоматично. Але просто переподключення — недостатньо. Потрібно відати клієнту події, які він пропустив.

Серверна сторона: кожна подія має монотонно зростаючий sequence або cursor. При переподключенні клієнт відправляє останній отриманий cursor:

{ "type": "subscribe", "channel": "chat.123", "lastSeq": 4521 }

Сервер відповідає подіями з seq > 4521. Вікно зберігання — зазвичай 24–72 години. Якщо клієнт був відключений довше — відправляємо повний снапшот стану.

Без цієї механіки кожен розрив з'єднання означає пропущені повідомлення — особливо критично на Android з Doze Mode.

Аутентифікація та авторизація

WebSocket-з'єднання аутентифікується при handshake через query parameter або перше повідомлення:

wss://api.example.com/ws?token=eyJ...

Query-параметр простіше, але токен потрапляє в логи. Переважніше: встановити з'єднання, потім відправити auth фрейм з токеном, чекати auth_ok від сервера перед будь-якими підписками.

Істечення токена за час сесії — реальний сценарій. Сервер має відправляти token_expiring попередження за 60 секунд до істечення, клієнт оновлює токен та відправляє новий auth фрейм без розриву з'єднання.

Масштабування на бекенді

Одна інстанція сервера не може тримати з'єднання всіх клієнтів. При горизонтальному масштабуванні повідомлення, що прийшло на сервер A, має дійти до клієнтів на серверах B та C. Стандартне рішення — pub/sub через Redis (PUBLISH/SUBSCRIBE). Кожен сервер підписується на каналах та форвардить повідомлення своїм WebSocket-клієнтам.

Інфраструктурні альтернативи: Ably (hosted WebSocket infrastructure), Pusher Channels, AWS API Gateway WebSocket — знімають операційну навантаження за рахунок вартості та меншого контролю.

Клієнтська реалізація

На Android — OkHttp WebSocket з pingInterval для heartbeat. На iOS — URLSessionWebSocketTask. Деталі реалізації клієнта описані в статті про WebSocket-чат. Тут важливо: при проектуванні API потрібно одразу договоритися про максимальний розмір повідомлення (WebSocket frame limit), формат помилок та graceful закриття з'єднання (1000 Normal Closure vs 1011 Internal Error).

Що входить у роботу

Проектуємо протокол поверх WebSocket, реалізуємо server-side з механікою replay, аутентифікацією та heartbeat, інтегруємо клієнтський SDK під потрібні платформи. Документуємо всі типи подій.

Строк: 6–12 днів з урахуванням серверної частини та тестування на нестійких мережах.