Sobes.tech
Junior

За какво се използват сокетите във уеб разработката?

sobes.tech AI

Отговор от AI

За двупосочен обмен на данни между клиента (браузъра) и сървъра в реално време. За разлика от традиционния HTTP, където клиентът инициира заявката, а сървърът отговаря, сокетите позволяват на сървъра да изпраща данни към клиента по всяко време без предварителна заявка.

Примери за използване:

  • Чат приложения: Моментална доставка на съобщения между потребителите.
  • Онлайн игри: Синхронизиране на състоянията на играчите и игровия свят в реално време.
  • Търговски платформи: Актуализиране на котировки на акции или криптовалути без презареждане на страницата.
  • Известия: Изпращане на push известия към потребителите при промяна на статуса на поръчка, ново съобщение и т.н.
  • Съвместно редактиране на документи: Синхронизиране на промените между няколко потребителя.

Сокетите се реализират върху протокола TCP и обикновено използват протокола WebSocket, който осигурява постоянна връзка между клиента и сървъра след първоначалното HTTP ръкостискане.

// Пример за клиентски код за установяване на WebSocket връзка
const ws = new WebSocket('ws://localhost:8080'); // Адрес на WebSocket сървъра

ws.onopen = () => {
  // Връзката е установена
  console.log('WebSocket връзка установена');
  ws.send('Здравей, сървър!'); // Изпращане на съобщение към сървъра
};

ws.onmessage = (event) => {
  // Получено съобщение от сървъра
  console.log('Съобщение от сървъра:', event.data);
};

ws.onclose = (event) => {
  // Връзката е затворена
  if (event.wasClean) {
    console.log(`Връзката е затворена чисто, код=${event.code} причина=${event.reason}`);
  } else {
    console.error('Връзката е прекъсната');
  }
};

ws.onerror = (error) => {
  // Грешка при работа с връзката
  console.error('Грешка WebSocket:', error);
};

Връзката WebSocket има ниски разходи за overhead в сравнение с постоянните HTTP заявки (polling или long polling), което я прави по-ефективна за приложения, изискващи честа размяна на данни в реално време.