Chats¶
Полноценная чат-система с Socket.io.
Возможности¶
- Групповые чаты
- Приватные чаты
- Чаты привязанные к сделкам
- Загрузка файлов
- Закрепление сообщений
- Пересылка сообщений
- Real-time через Socket.io
API¶
Получить чаты¶
GET /api/chats
// Response
[
{
"id": 1,
"name": "Сделка #123",
"type": "deal",
"participants": [...],
"messages": [{ "content": "Последнее сообщение" }],
"unreadCount": 3
}
]
Создать чат¶
POST /api/chats
{
"name": "Обсуждение проекта",
"type": "group",
"participants": [1, 2, 3],
"dealId": 123 // опционально
}
Отправить сообщение¶
POST /api/chats/:id/messages
Content-Type: multipart/form-data
content: "Текст сообщения"
files: [file1, file2] // до 10 файлов, макс 20MB каждый
Приватный чат¶
Управление участниками¶
// Добавить
POST /api/chats/:id/participants
{ "userId": 5 }
// Удалить
DELETE /api/chats/:id/participants/:userId
// Покинуть чат
POST /api/chats/:id/leave
Сообщения¶
// Редактировать
PUT /api/chats/:id/messages/:messageId
{ "content": "Исправленный текст" }
// Удалить
DELETE /api/chats/:id/messages/:messageId
// Переслать
POST /api/chats/:id/forward
{ "messageId": 123 }
Socket.io Events¶
// Подключение к чату
socket.join(chatId.toString());
// Получение сообщений
socket.on('new-message', (data) => {
console.log(data.chatId, data.message);
});
// Серверная отправка
io.to(chatId.toString()).emit('new-message', { chatId, message });
Company Isolation¶
Пользователи видят только: - Чаты где они участники - Чаты привязанные к сделкам их компании - Общие чаты (type: 'general')
Системные админы (без companyId) видят все чаты.