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