Внедрете websocket сървър в node.js

Внедряването на WebSocket сървър в Node.js е лесен процес, благодарение на наличието на различни WebSocket библиотеки. В тази статия ще използваме популярната библиотека „ws“, за да създадем WebSocket сървър в Node.js.

Инсталиране на библиотеката „ws“

За да започнем, трябва да инсталираме библиотеката "ws". Можете да го инсталирате с помощта на npm (Node Package Manager), като изпълните следната команда във вашия терминал или команден ред:

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 връзки. Правим това чрез събитието „връзка“:

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');
  });

  // ...
});

В горния код ние слушаме за събитието „close“ и регистрираме съобщение, когато клиент прекъсне връзката.

Обработка на грешки

Важно е да се обработват грешки при внедряване на WebSocket сървър. Можем да обработваме грешки, като използваме събитието „грешка“:

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 клиент като базирания на браузъра „Simple WebSocket Client“. Просто отворете клиента и се свържете към “ws://localhost:8080.” Трябва да видите „Добре дошли в WebSocket сървъра!“ съобщение и да можете да изпращате и получавате съобщения.

Заключение

В тази статия видяхме как да създадем WebSocket сървър в Node.js с помощта на библиотеката „ws“. Покрихме основите на обработката на връзки, излъчване на съобщения, затваряне на връзки и обработка на грешки. С тези знания вече можете да създавате по-усъвършенствани WebSocket приложения в Node.js.