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