Sobes.tech
Junior

Milleks kasutatakse socket'eid veebiarenduses?

sobes.tech AI

Vastus AI-lt

Kahepoolne andmevahetus klienti (brauseri) ja serveri vahel reaalajas. Erinevalt tavapärasest HTTP-st, kus klient algatab päringu ja server vastab, võimaldavad soketid serveril saata andmeid kliendile igal ajal ilma eelneva päringuta:

Kasutusnäited:

  • Vestlusrakendused: Sõnumite kohene edastamine kasutajate vahel.
  • Veebimängud: Mängijate ja mängumaailma seisundi sünkroniseerimine reaalajas.
  • Kaubandusalased platvormid: Aktsiate või krüptovaluutade hindade uuendamine ilma lehte uuesti laadimata.
  • Teavitused: Push-teavituste saatmine kasutajatele tellimuse staatuse muutmisel, uue sõnumi saamisel jms.
  • Dokumentide ühine redigeerimine: Muudatuste sünkroniseerimine mitme kasutaja vahel.

Sokette rakendatakse TCP protokolli peal ning tavaliselt kasutatakse WebSocket protokolli, mis tagab püsiva ühenduse kliendi ja serveri vahel pärast esmast HTTP-kättesaamist.

// Näide kliendikoodist WebSocket ühenduse loomiseks
const ws = new WebSocket('ws://localhost:8080'); // WebSocket serveri aadress

ws.onopen = () => {
  // Ühendus on loodud
  console.log('WebSocket ühendus on loodud');
  ws.send('Tere, server!'); // Sõnumi saatmine serverile
};

ws.onmessage = (event) => {
  // Sõnum serverilt saadud
  console.log('Sõnum serverilt:', event.data);
};

ws.onclose = (event) => {
  // Ühendus suletud
  if (event.wasClean) {
    console.log(`Ühendus suletud puhtalt, kood=${event.code} põhjus=${event.reason}`);
  } else {
    console.error('Ühendus katkestati');
  }
};

ws.onerror = (error) => {
  // Viga
  console.error('WebSocket viga:', error);
};

WebSocket-ühendus on madala koormusega võrreldes pidevate HTTP-päringutega (polling või long polling), muutes selle tõhusamaks rakendustele, mis nõuavad sagedast andmevahetust reaalajas.