В этом блоге я собираюсь установить соединение WebSocket между клиентом и сервером, используя структуру удовлетворения узла.

Что такое веб-сокет:

  • Websocket — это протокол связи.
  • Websocket позволяет нам установить полнодуплексное соединение из веб-браузера пользователя на сервер.
  • Соединение WebSocket инициируется путем отправки запроса квитирования WebSocket из HTTP-соединения браузера на сервер.

Что такое запрос квитирования WebSocket:

  • Запрос квитирования Websocket используется для установления полнодуплексного соединения. если клиенту требуется соединение WebSocket, тогда клиент должен отправить запрос установления связи на сервер, и сервер отправит ответ на этот запрос.
  • В соединении WebSocket браузер и сервер могут взаимодействовать друг с другом одновременно.

Клиентский запрос подтверждения:

хост: локальный

обновление: веб-сокет

подключение: Обновление

Sec-webSocket-ключ: jk23kh13523kjob23b13b2==*

Sec-webSocket-Версия: 13

  • Здесь клиент отправит ключ Sec-WebSocket, закодированный в base64, 16-байтовое значение, а секретный ключ выбирается случайным образом.
  • И эта строка хэшируется с помощью SHA-1.
  • Ключ sec-WebSocket используется для открытия соединения WebSocket. он отправляется с сервера.

Ответ сервера такой:

Обновление: веб-сокет

подключение: Обновление

Sec-WebScoket-Accept: Hkjadf114kdbja23=

Sec-webScoket-Accept:

  • Эта строка также хэшируется SHA-1, что дает шестнадцатеричные значения.
  • Этот заголовок отправляется с сервера клиенту, чтобы сообщить, что сервер готов инициировать соединение WebSocket.

Теперь мы можем перейти к нашему мини-проекту:

  • В этом примере я собираюсь установить соединение WebSocket между клиентом и сервером.

Первоначальная настройка этого проекта:

  • Во-первых, нам нужно инициализировать папку вашего проекта с помощью npm, только тогда мы сможем загрузить пакеты npm.

$ npm инициализация -y

  • После выполнения вышеуказанной команды мы должны установить пакет falsify с помощью команды npm install.

$ npm установить быстро

  • И, наконец, нам нужно загрузить пакет WebSocket с именем «fastify-ws».

Приведенный выше фрагмент кода принадлежит мне, мы также можем загрузить пакет nodemon, который используется для автоматического перезапуска сервера.

Теперь я собираюсь создать сервер, используя фреймворк node fastify.

на стороне сервера:

  • Фрагмент кода ниже — это мой файл server.js.

  • В этом файле я сначала создал сервер, который прослушивает порт 8080.
  • И самое главное, я зарегистрировал свой пакет «fastify-ws» в папке моего проекта.
  • использование функции fatisfy.ws.on() заключается в том, что сначала эта функция работает как генератор событий.

fastify.ws.on('соединение', wscontroller)

  • Когда соединение установлено, запускается функция обратного вызова этой функции. wscontrollser — это функция.
  • Внутри функции wscontroller я написал две функции ws, которые работают как эмиттеры событий.

ws.on(‘сообщение’, (msg) =› {

константные данные = JSON.parse(msg);

console.log(данные);

ws.send(JSON.stringify({

msg: «Вы успешно подключены»,

}));

})

  • одна функция перечисляет событие сообщения, когда это событие произошло. Функция обратного вызова этой функции запускается со стороны сервера.
  • после запуска этой функции обратного вызова ws.send(JSON.stringify({msg: «Вы успешно подключены»})) отправляет сообщение клиенту.
  • Всякий раз, когда клиент подключается через соединение WebSocket, это сообщение отправляется клиенту с сервера.

на стороне клиента:

  • В этом файле мне потребовался объект WebSocket ws, используя функцию require().
  • «ws» — это встроенный модуль, и я присвоил ему переменную с именем webSocket.
  • И эта переменная WebSocket является конструктором.
  • И я создаю экземпляр функции класса WebSocket и присваиваю ей значение.

постоянный хост = ‘ws://127.0.0.1:8080?user_id=1’

const ws = новый WebSocket (хост);

  • Переменная ws является объектом.
  • Функция ws.onopen() используется для открытия сервера WebSocket. всякий раз, когда клиент подключается к серверу с использованием соединения WebSocket, на сервер отправляется сообщение ws.send(JSON.stringify({ name: «Client one is here» })) .

ws.onopen = функция (событие) {

ws.send(JSON.stringify({ name: «Клиент один здесь» }))

}

  • ws.onmessage(), которая также является функцией, когда сообщение отправляется с сервера, и это сообщение передается параметру функции обратного вызова этой функции. Таким образом, с помощью этой функции мы можем получить сообщение, отправленное с сервера.

ws.onmessage = (msg) =› {

константные данные = JSON.parse(msg.data);

console.log(данные.msg);

}

  • И последнее — это функция ws.on(), которая также прослушивает событие, которое является событием закрытия. Когда соединение сокета закрывается со стороны сервера, это событие «закрытия» запускает эту функцию обратного вызова.

ws.on(‘закрыть’, () =› {

console.log(`Вы остановлены сервером!!!`)

})