Мы используем cookies
все статьи

Websocket API на NodeJS

В данной статье мы рассмотрим технологию Websocket для разработки приложений на nodejs. 
Первым делом нам необходимо понять, что же такое Websocket и для чего он нужен. 
Websocket — это один из про ...

В данной статье мы рассмотрим технологию Websocket для разработки приложений на nodejs. Первым делом нам необходимо понять, что же такое Websocket и для чего он нужен. Websocket — это один из протоколов связи, используемый поверх TCP-соединения, который необходим для обмена сообщениями между браузером и веб-сервером через постоянное соединение. Данные, в свою очередь, передаются в обоих направлениях в виде «пакетов», не разрывая соединение, без дополнительных HTTP-запросов. Данная технология необходима для сервисов, которые требуют постоянный обмен данными. Это могут быть как игры, так и чаты в реальном времени. Данная технология используется во многих веб-приложениях и умение разработки с использованием данного протокола - может быть очень полезным навыком для разработчика.

С ее помощью можно реализовывать большое количество функционала, моментальную передачу уведомлений для пользователя и многое другое.

Одно из главных преимуществ – данная технология достаточно проста в использовании, научившись с ней обращаться один раз - далее работа с ней не доставит никаких трудностей.

Также не обязательно строить все серверное приложение с использованием данной технологии, можно внедрять ее постепенно, только по необходимости в конкретных местах функционала.

Как внедрять и применять технологию Websocket в Nodejs?

Nodejs обладает рядом библиотек, которые дают возможность строить взаимодействие между клиентом и сервером, используя протокол Websocket поверх нативной имплементации HTTP. В качестве примеров таких библиотек можно выделить ws или еще более популярную библиотеку socket.io. Разберем внедрение Websocket в nodejs на примере библиотеки ws.

Первым делом необходимо установить данную библиотеку в проект, для этого существует несколько команд: yarn add ws или npm i ws.

Используйте необходимую команду в зависимости от вашего менеджера пакетов. Далее, после установки необходимо подключить данную библиотеку с помощью следующей команды: 

const webSocket = require('ws');

После этого создадим экземпляр класса WebSocket, укажем порт на котором будет запущен наш сервер с WebSocket:

const server = new webSocket.Server({port: 8000});

Подходы HTTP сервера и WebSocket сервера сильно отличаются в следующем: сервер HTTP принимает все запросы напрямую, а сервер с использованием технологии WebSocket принимает запросы от подключения, при этом само соединение является полнодуплексным. 

Что такое полнодуплексное состояние? Дуплекс и полудуплекс —  это режимы работы приёмо-передающих устройств. 

Если мы говорим о режиме дуплекс - устройства могут передавать и принимать информацию одновременно.

 А в режиме полудуплекс — или передавать, или принимать информацию. Далее нам необходимо написать обработчик подключения с использованием функции onConnection:

server.on(‘connection', onConnection);

Сейчас мы реализуем подключение двух обработчиков событий для объектов wsClient: message и close. message - данный параметр обрабатывает событие входящего сообщения от клиента. close - это событие для разрыва соединения с клиентом. В нашей функции onConnection напишем любое сообщение в консоли и отправим его клиенту: function onConnect(wsClient) {

    console.log(‘New message‘);

    wsClient.send(‘Hello world‘);

    wsClient.on('message', function(message) {

        /* тут описывается обработка сообщений от клиента */

    }

    wsClient.on('close', function() {

        console.log(‘Closed‘);

    }

}

Таким образом мы реализовали отправку сообщений на серверной стороне. Если произойдет событие close, то нам выведется об этом уведомление в консоль. Но нам недостаточно описать всю логику только на стороне  сервера, нам также необходимо настроить данную библиотеку и прием данных на клиенте.

Добавляем библиотеку с помощью используемого менеджера пакета на клиенте по аналогии с примером на сервере и далее переходим к процессу подключения. Подключение технологии на стороне клиента:

const clientSocket = new WebSocket('ws://localhost:8000');

clientSocket.onopen = function () {

    console.log(‘Server was connected’);

}; Далее нам необходимо описать команду для приема данных от сервера на клиенте, чтобы мы могли обмениваться данными в реальном времени: try {

    const newMessage = JSON.parse(message);

    wsClient.send(newMessage.data);

} catch (error) {

    console.log('Ошибка', error);

}

Таким образом мы настроили WebSocket на клиенте и на сервере.

Теперь мы можем дальше дополнять наш функционал различными дополнительными функциями. Мы можем описывать дополнительные middleware перед использованием нашей логики на  WebSocket, а также можем создавать различные сообщения или же организовать отправку уведомлений и получение всего этого на стороне клиента.

В данной статье мы познакомились с технологией WebSocket API на nodejs и научились внедрять ее в проекты.

Alena L.
Alena L.
July 6, 2022#tech
другие статьи
Habits that prevent you from growing in your career

Одной из важнейших мотиваций любого сотрудника является к...

читать
читать
Tips for developing problem solving skills

Навык решения проблем является основополагающим для успеш...

читать
читать
5 rules of etiquette in the open space

Офисы многих IT-компаний построены по типу опенспейс. Обы...

читать
читать
Remix vs. Next.js: detailed comparison

Next.js — одна из самых популярных платформ React, исполь...

читать
читать