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 կապը ունի ցածր ծախսեր՝ համեմատած մշտական HTTP հարցումների (polling կամ long polling), ինչը դարձնում է այն ավելի արդյունավետ իրական ժամանակի տվյալների փոխանակման պահանջներ ունեցող հավելվածների համար։