Внедрить сервер веб-сокетов в node.js

Внедрение сервера WebSocket в Node.js — простой процесс благодаря наличию различных библиотек WebSocket. В этой статье мы будем использовать популярную библиотеку «ws» для создания сервера WebSocket в Node.js.

Установка библиотеки «ws»

Для начала нам нужно установить библиотеку «ws». Вы можете установить его с помощью npm (диспетчера пакетов узла), выполнив следующую команду в терминале или командной строке:

npm install ws

Создание сервера WebSocket

После установки библиотеки мы можем создать наш сервер WebSocket. Начнем с импорта библиотеки «ws» в наш файл Node.js:

const WebSocket = require('ws');

Затем мы создаем новый сервер WebSocket, передав HTTP-сервер в качестве аргумента:

const server = new WebSocket.Server({ port: 8080 });

В приведенном выше коде мы создаем новый сервер WebSocket на порту 8080. Вы можете изменить номер порта на любой допустимый номер порта, который вы хотите использовать.

Обработка соединений WebSocket

После создания сервера нам нужно обработать входящие соединения WebSocket. Делаем это с помощью события «connection»:

server.on('connection', (socket) => {
  console.log('Client connected');

  socket.on('message', (message) => {
    console.log(`Received message: ${message}`);
  });

  socket.send('Welcome to the WebSocket server!');
});

В приведенном выше коде мы прослушиваем событие «соединение» и регистрируем сообщение при подключении нового клиента. Мы также прослушиваем событие «сообщение» и регистрируем полученное сообщение. Наконец, мы отправляем сообщение клиенту для подтверждения соединения.

Рассылка сообщений

Мы можем транслировать сообщения всем подключенным клиентам, используя цикл for:

server.on('connection', (socket) => {
  // ...

  socket.on('message', (message) => {
    console.log(`Received message: ${message}`);

    server.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });

  // ...
});

В приведенном выше коде мы перебираем всех клиентов и отправляем полученное сообщение каждому клиенту, который в данный момент подключен.

Закрытие соединений

Мы можем обработать событие «close», чтобы закрыть соединение, когда клиент отключается:

server.on('connection', (socket) => {
  // ...

  socket.on('close', () => {
    console.log('Client disconnected');
  });

  // ...
});

В приведенном выше коде мы прослушиваем событие «закрыть» и регистрируем сообщение, когда клиент отключается.

Обработка ошибок

Важно обрабатывать ошибки при реализации сервера WebSocket. Мы можем обрабатывать ошибки с помощью события «error»:

server.on('connection', (socket) => {
  // ...

  socket.on('error', (error) => {
    console.error(`WebSocket error: ${error}`);
  });

  // ...
});

В приведенном выше коде мы прослушиваем событие «ошибка» и регистрируем любые возникающие ошибки.

  1. Полный код

Вот полный код для нашего сервера WebSocket:

const WebSocket = require('ws');

const server = new WebSocket.Server({ port: 8080 });

server.on('connection', (socket) => {
  console.log('Client connected');

  socket.on('message', (message) => {
    console.log(`Received message: ${message}`);

    server.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });

  socket.send('Welcome to the WebSocket server!');

  socket.on('close', () => {
    console.log('Client disconnected');
  });

  socket.on('error', (error) => {
    console.error(`WebSocket error: ${error}`);
  });
});

console.log('WebSocket server is running on port 8080');

В приведенном выше коде мы импортируем библиотеку «ws», создаем новый сервер WebSocket, обрабатываем входящие соединения, широковещательные сообщения, закрываем соединения и обрабатываем ошибки.

Тестирование сервера

Чтобы протестировать наш сервер WebSocket, мы можем использовать клиент WebSocket, такой как «Простой клиент WebSocket» на основе браузера. Просто откройте клиент и подключитесь к «ws://localhost:8080». Вы должны увидеть «Добро пожаловать на сервер WebSocket!» сообщения и иметь возможность отправлять и получать сообщения.

Заключение

В этой статье мы увидели, как создать сервер WebSocket в Node.js с помощью библиотеки «ws». Мы рассмотрели основы обработки соединений, широковещательной рассылки сообщений, закрытия соединений и обработки ошибок. Обладая этими знаниями, вы теперь можете создавать более продвинутые приложения WebSocket в Node.js.