Sobes.tech
Junior

Kokiais tikslais naudojami soketai interneto kūrime?

sobes.tech AI

Atsakymas iš AI

Dvivietis duomenų mainų būdas tarp kliento (naršyklės) ir serverio realiuoju laiku. Skirtingai nuo tradicinio HTTP, kur klientas inicijuoja užklausą, o serveris atsako, soketai leidžia serveriui siųsti duomenis klientui bet kuriuo metu be išankstinės užklausos:

Naudojimo pavyzdžiai:

  • Pokalbių programėlės: Momentinis žinučių pristatymas tarp vartotojų.
  • Interneto žaidimai: Žaidėjų ir žaidimo pasaulio būsenos sinchronizavimas realiuoju laiku.
  • Prekybos platformos: Akcijų ar kriptovaliutų kotiruočių atnaujinimas be puslapio perkrovimo.
  • Pranešimai: Push pranešimų siuntimas vartotojams keičiant užsakymo būseną, gaunant naują žinutę ir kt.
  • Dokumentų bendras redagavimas: Pakeitimų sinchronizavimas tarp kelių vartotojų.

Soketai realizuojami virš TCP protokolo ir dažniausiai naudoja WebSocket protokolą, kuris užtikrina nuolatinį ryšį tarp kliento ir serverio po pradinio HTTP rankos paspaudimo.

// Pavyzdinis kliento kodas WebSocket ryšio nustatymui
const ws = new WebSocket('ws://localhost:8080'); // WebSocket serverio adresas

ws.onopen = () => {
  // Ryšys užmegztas
  console.log('WebSocket ryšys užmegztas');
  ws.send('Sveiki, serveri!'); // Žinutės siuntimas serveriui
};

ws.onmessage = (event) => {
  // Gauta žinutė iš serverio
  console.log('Gauta žinutė iš serverio:', event.data);
};

ws.onclose = (event) => {
  // Ryšys užsidarė
  if (event.wasClean) {
    console.log(`Ryšys švariai užsidarė, kodas=${event.code} priežastis=${event.reason}`);
  } else {
    console.error('Ryšys nutrūko');
  }
};

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

WebSocket ryšys turi mažas išlaidas palyginti su nuolatiniais HTTP užklausomis (polling ar long polling), todėl yra efektyvesnis programoms, kurioms reikalingas dažnas duomenų mainų realiuoju laiku.