66просмотров
20 марта 2026 г.
Score: 73
Из нашего опыта: как построить автономный чат для закрытого общения Мы делали платформу для продвижения своих товаров и услуг через инфлюенсеров и СМИ. Если хочешь привлечь аудиторию, заказываешь на платформе определённые формы контента (пресс-релизы, посты в соцсети и т. п.), обсуждаешь с копирайтером ценности своей идеи, чтобы он сделал на них акцент, и лидеры мнений транслируют информацию на своих лояльных подписчиков. Для общения между клиентами, копирайтерами и администраторами нужно было сделать внутренний чат. Главным условием было сохранение истории переписки только на стороне клиента. Например, есть такой сервис JivoChat, где сообщения проходят через внешние серверы. Наш же чат должен был быть автономным. Работает это так. Когда клиент оплачивает услуги копирайтера, создается заявка и к ней привязывается чат. Там обсуждаются детали задачи. Администратор здесь — безучастный контролёр качества работы копирайтера. Что мы сделали? Мы использовали протокол Mercure, который работает на стандарте Server-Sent Events (SSE). Простыми словами: браузер открывает соединение с сервером и держит его, а сервер отправляет уведомления, когда приходит новое сообщение. Если соединение обрывается, оно автоматически восстанавливается. Этот подход дешевле и проще, чем WebSocket. Нам не нужна была двусторонняя связь (как в WebSocket), достаточно было, чтобы сервер мог отправлять данные клиенту в реальном времени. В качестве бэкенда использовали Symfony, для Mercure там есть готовый компонент. Плюс мы позаботились о безопасности: настроили экранирование сообщений, чтобы вредоносный код не мог запуститься.