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.