05.11.2024
4 хвилин читання

Як працювати з WebSocket у JavaScript: покрокова інструкція

работа с websocket в javaScript

Однією з технологій, яка дає змогу поліпшити взаємодію між фронтендом і бекендом, є WebSocket. На відміну від класичного HTTP-запиту, він дає змогу відкривати постійне з’єднання між сервером і клієнтом, забезпечуючи двосторонню передачу даних. У цьому посібнику від онлайн-школи FoxmindEd ми розглянемо, як працювати з WebSocket JavaScript.

Хочете опанувати професію Front-end Developer? Приєднуйтесь до програми “Від 0 до Junior Front-end Developer за 10 місяців”. Скористайтеся вигідною пропозицією від FoxmindEd!
Зареєструватись

Приклади практичного використання

Почнемо з того, як реалізувати websocket client javascript. Тут достатньо скористатися вбудованим API.

const socket = new WebSocket('wss://example.com/socket');

// Triggered when connection is successfully established

socket.onopen = function() {

  console.log('Connection established');

};

// Triggered when data is received from the server

socket.onmessage = function(event) {

  console.log('Data received: ', event.data);

};

// Triggered when the connection is closed

socket.onclose = function(event) {

  if (event.wasClean) {

    console.log('Connection closed cleanly');

  } else {

    console.log('Connection lost'); // e.g., internet connection lost

  }

};

// Triggered when an error occurs

socket.onerror = function(error) {

  console.log('Error: ', error.message);

};

Цей код демонструє javascript websocket приклад. Зверніть увагу на кілька важливих моментів: підключення, опрацювання повідомлень і помилок.

Приклад реалізації чату

Цей протокол ідеально підходить для створення додатків у реальному часі, таких як чати. Розглянемо спрощений приклад:

const chatSocket = new WebSocket('wss://chat.example.com');

// Sending a message

function sendMessage(message) {

  chatSocket.send(JSON.stringify({ type: 'message', content: message }));

}

// Receiving a message

chatSocket.onmessage = function(event) {

  const receivedMessage = JSON.parse(event.data);

  console.log('New message: ', receivedMessage.content);

};

Тут показано, як здійснюється websocket надсилання даних javascript і їхнє опрацювання на стороні клієнта. У цьому прикладі ми використовуємо send() для надсилання даних, а на сервері вони обробляються в JSON-форматі. Це стандартний спосіб передачі даних через протокол, і він зручний для роботи з різними типами даних.

Інтеграція із сервером

Для повної реалізації протоколу потрібна і серверна частина. WebSocket може бути легко інтегрований з різними серверними технологіями, такими як Node.js, Java або Python. Розглянемо приклад на Node.js:

const WebSocketLib = require('ws');

const socketServer = new WebSocketLib.Server({ port: 9000 });

// Handling new client connections

socketServer.on('connection', (clientSocket) => {

  console.log('New connection established');

  // Handling incoming messages

  clientSocket.on('message', (msg) => {

    console.log('Message received: ', msg);

    clientSocket.send('Message received');

  });

  // Handling connection closure

  clientSocket.on('close', () => {

    console.log('Connection closed');

  });

});

Підключення та надсилання даних

Отже, як же встановити websocket підключення javascript?

Для цього в джаваскрипті використовується конструктор WebSocket(). Важливо розуміти, що протокол має два варіанти: ws:// для звичайного зв’язку і wss:// для захищеного.

const socket = new WebSocket('wss://example.com');

Для надсилання повідомлень використовується метод send():

socket.send('Hello!');

Для отримання повідомлень від сервера:

socket.onmessage = function(event) {

  console.log('Message received: ', event.data);

};

Приклад надсилання та отримання даних

Для надсилання даних використовується метод send(). Це важливий крок для розуміння того, як працює websocket javascript tutorial:

socket.send('Hello!');

А для отримання повідомлень на стороні клієнта:

socket.onmessage = function(event) {

  console.log('Message received: ', event.data);

};

Обробка подій

Варто пам’ятати про різні типи подій: onopen, onmessage, onclose, onerror. Onopen спрацьовує в разі успішного встановлення з’єднання, що дає змогу виконувати дії, які залежать від стабільного підключення. Onmessage відповідає за отримання даних від сервера, що важливо для обробки вхідних повідомлень або подій у реальному часі. Onclose сигналізує про закриття з’єднання, що дає змогу коректно завершити взаємодію або спробувати повторно підключитися. Нарешті, onerror допомагає обробляти помилки, які можуть виникати через збої в мережі, проблеми на сервері або інші неполадки. Їх обробка допоможе зробити ваш застосунок стійкішим до збоїв у підключенні та забезпечити безперебійну роботу.

Підпишіться на наш Ютуб-канал! Корисні відео для програмістів чекають на вас! YouTube
Оберіть свій курс програмування! Шлях до кар’єри програміста починається тут! Подивитись

Работа с неполадками и оптимизация производительности

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

socket.onerror = function(error) {

  console.error('Connection error: ', error.message);

};

Оптимізація продуктивності

Щоб мінімізувати навантаження на сервер, намагайтеся уникати надсилання зайвих даних. Використовуйте стиснення даних і надсилання тільки необхідних пакетів. Важливий момент – це управління часом очікування (timeout) і ping/pong-повідомленнями для підтримки з’єднання активним.

Безпека

Під час використання WebSocket у продакшн-середовищах завжди застосовуйте wss://, щоб шифрувати інформацію між клієнтом і сервером і захистити інформацію від перехоплення зловмисниками.

Висновок

Як ми бачимо, цей протокол надає потужний інструмент для створення застосунків реального часу на джаваскрипт, таких, як чати, системи сповіщень і навіть ігри.

FAQ
WebSocket - це протокол, що дає змогу встановлювати постійне двостороннє з'єднання між клієнтом і сервером для миттєвого обміну даними.
Для цього використовуйте вбудований конструктор new WebSocket('wss://example.com').
Основні події: onopen (підключення), onmessage (приймання даних), onclose (закриття з'єднання), onerror (помилки).
Використовуйте метод .send(), наприклад, socket.send('Hello!').
WebSocket підтримує постійне з'єднання, що прискорює обмін даними і підходить для додатків реального часу, таких як чати.
Використовуйте захищений протокол wss:// для шифрування даних між клієнтом і сервером.

🤔 Залишилися запитання про роботу з WebSocket у JavaScript? - сміливо задавайте нижче! 💬

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів

foxmindED
ІТ-спека: Знижка 20% на стартові курси!
до кінця акції
00
днів
00
годин
00
хвилин
Забронювати