Sobes.tech
Junior

ვებ განვითარების დროს სოკეტები რა მიზნით გამოიყენება?

sobes.tech AI

პასუხი AI-სგან

ორმხრივი მონაცემთა გაცვლა მომხმარებელს (ბრაუზერს) და სერვერს შორის რეალურ დროში. განსხვავებით ტრადიციული HTTP-ისგან, სადაც მომხმარებელი ინიცირებს მოთხოვნას, ხოლო სერვერი პასუხობს, სოკეტები საშუალებას აძლევს სერვერს ნებისმიერ დროს გაუგზავნოს მონაცემები მომხმარებელს წინასწარი მოთხოვნის გარეშე:

გამოყენების მაგალითები:

  • ჩატ-პროგრამები: შეტყობინებების მყისიერი მიწოდება მომხმარებლებს შორის.
  • ონლაინ თამაშები: მოთამაშეების და თამაშის სამყაროს მდგომარეობის სინქრონიზაცია რეალურ დროში.
  • სავაჭრო პლატფორმები: აქციებისა და კრიპტოვალუტების კოტირებების განახლება გვერდის გადატვირთვის გარეშე.
  • შეტყობინებები: პუშ-შეტყობინებების გაგზავნა მომხმარებლებს შეკვეთის სტატუსის ცვლილების, ახალი შეტყობინების და ა.შ. დროს.
  • დოკუმენტების ერთობლივი რედაქტირება: ცვლილებების სინქრონიზაცია რამდენიმე მომხმარებლის შორის.

სოკეტები რეალიზებულია 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), რაც მას უფრო ეფექტურს ხდის რეალურ დროში მონაცემთა გაცვლის მოთხოვნებსა და საჭიროებებისთვის.