
Node JS: мгновенные сообщения при помощи WebSocket
WebSocket — это протокол связи, который обеспечивает двунаправленную связь в режиме реального времени между клиентом и сервером.
В этой статье мы рассмотрим, как использовать WebSocket в Node.js для создания мгновенных сообщений и приложений в реальном времени.
Установка необходимых пакетов:
Для начала установите пакет «ws» — это библиотека WebSocket для Node.js. Выполните следующую команду:
npm install ws
Создание сервера WebSocket:
Создайте файл server.js и импортируйте библиотеку «ws». Затем создайте новый экземпляр сервера WebSocket и укажите порт для прослушивания:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
Обработка событий сервера WebSocket:
Добавьте обработчик событий connection для обработки новых подключений. Внутри обработчика вы сможете получить доступ к сокету, который представляет клиента:
server.on('connection', (socket) => {
  console.log('Client connected');
  // Обработка полученных сообщений
  socket.on('message', (message) => {
    console.log(`Received: ${message}`);
    // Рассылка сообщений всем подключенным клиентам
    server.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
  // Обработка закрытия соединения
  socket.on('close', () => {
    console.log('Client disconnected');
  });
});
Создание клиентской части:
Создайте HTML-файл с полем ввода и кнопкой отправки. Добавьте скрипт для подключения к серверу WebSocket и обработки событий:
<!DOCTYPE html>
<html>
<head>
  <title>WebSocket Chat</title>
</head>
<body>
  <input type="text" id="message" placeholder="Type a message...">
  <button onclick="sendMessage()">Send</button>
  <script>
    const socket = new WebSocket('ws://localhost:8080');
    // Обработка полученных сообщений
    socket.addEventListener('message', (event) => {
      console.log(event.data);
    });
    // Отправка сообщения
    function sendMessage() {
      const message = document.getElementById('message').value;
      socket.send(message);
    }
  </script>
</body>
</html>
Запуск сервера и тестирование:
Запустите сервер, выполнив команду:
node server.js
Откройте HTML-файл в браузере и начните обмен сообщениями.
Вы увидите мгновенную передачу сообщений между клиентами в режиме реального времени в консоли браузера и в терминале.
Откройте файл в двух браузерах, для очевидного тестирования.
