Введение
WebSockets позволяют отправлять и получать данные по сети без использования традиционного протокола HTTP. Используя WebSockets, вы можете создать приложение реального времени. Например, вы можете отправлять сообщения другим пользователям без необходимости обновлять страницу, чтобы увидеть новые сообщения.
Мы будем использовать библиотеку ws
. Это модуль Node.js, который позволяет создавать серверы и клиенты WebSockets.
Предварительные условия
Прежде чем начать, убедитесь, что у вас установлен Node.js:
- Скачать Node.js
Установите
Для установки библиотеки ws
необходимо выполнить следующую команду:
npm install ws
Далее создайте новый файл server.js
и откройте его в вашем любимом текстовом редакторе.
Создание сервера WebSocket
В файле server.js
создайте следующий код:
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8081 })
wss.on('connection', function connection(ws) {
console.log('Client connected')
const interval = setInterval(() => {
ws.send('hello world')
}, 1000)
ws.on("close", () => {
console.log("Client disconnected");
});
ws.onerror = function () {
console.log("Some Error occurred");
}
});
Описание кода:
Таким образом мы смоделируем потоковое приложение, в котором сервер отправляет сообщение клиенту каждую секунду.
Затем, чтобы запустить сервер, выполните следующую команду:
node server.js
Затем оставьте сервер запущенным и откройте новое окно терминала, в котором мы подготовим наш клиент.
Создание клиента WebSocket
В новый файл под названием client.js
добавьте следующий код:
const WebSocket = require('ws')
const ws = new WebSocket('ws://localhost:8081')
ws.on('open', function open() {
ws.on('message', function message(data) {
console.log(`${data}`);
});
});
Приведенный выше код создает новый WebSocket-клиент и подключается к серверу через порт 8081.
При получении сообщения от сервера происходит событие message
.
Чтобы протестировать клиента, выполните следующую команду:
node client.js
Вы должны увидеть следующий результат:
hello world
hello world
hello world
...
Пример:
Заключение
Это простой пример использования WebSockets в Node.js.
Если вы хотите узнать больше о WebSockets, ознакомьтесь с официальной документацией.
Если вы хотите увидеть, как WebSockets работает с Laravel, ознакомьтесь со следующим руководством:
Laravel WebSockets
Для дальнейшего чтения я также рекомендую ознакомиться со следующим учебником о разнице между SSE и WebSockets:
SSE vs WebSockets