В Node.js можно использовать библиотеку ws
для работы с WebSocket. Чтобы отправить сообщение определенному клиенту на WebSocket, необходимо иметь некий способ для идентификации этого клиента.
Вот пример простого сервера WebSocket, который отправляет сообщения определенному клиенту:
const WebSocket = require('ws'); // Создание WebSocket-сервера на порту 8080 const wss = new WebSocket.Server({ port: 8080 }); // Словарь для хранения соединения каждого клиента по уникальному идентификатору const clients = new Map(); // При установлении соединения с клиентом wss.on('connection', (ws) => { // Генерация уникального идентификатора для клиента const clientId = generateClientId(); // Сохранение соединения клиента в словаре clients.set(clientId, ws); // При получении сообщения от клиента ws.on('message', (message) => { // Обработка сообщения console.log(`Получено сообщение от клиента ${clientId}: ${message}`); // Отправка сообщения обратно клиенту ws.send(`Привет, клиент ${clientId}! Ты написал: ${message}`); }); // При закрытии соединения с клиентом ws.on('close', () => { // Удаление соединения клиента из словаря clients.delete(clientId); console.log(`Соединение с клиентом ${clientId} закрыто`); }); }); // Функция для генерации уникального идентификатора клиента function generateClientId() { return Math.random().toString(36).substring(2, 8); } // Функция для отправки сообщения определенному клиенту function sendMessageToClient(clientId, message) { const ws = clients.get(clientId); if (ws) { ws.send(message); } else { console.log(`Клиент ${clientId} не найден`); } }
В этом примере мы создаем WebSocket-сервер на порту 8080 и сохраняем соединение каждого клиента в словаре clients
с использованием уникального идентификатора. При получении сообщения от клиента мы отправляем это сообщение обратно клиенту. Когда соединение с клиентом закрывается, мы удаляем его соединение из словаря.
Для отправки сообщения определенному клиенту мы можем использовать функцию sendMessageToClient(clientId, message)
, которая выполняет поиск соединения клиента по его идентификатору в словаре clients
. Если клиент найден, мы отправляем сообщение, иначе выводим сообщение об ошибке.
Надеюсь, эта информация будет полезной для вас! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.