Junior
Server va mijoz o'rtasida bir nechta aloqa usullarini tavsiflang.
sobes.tech AI
AIdan javob
Mijozlar (brauzer) va server o'rtasida asosiy aloqa usullari mavjud.
-
HTTP/HTTPS (Polling/Short Polling):
- Mijoz serverga so'rov yuboradi va javob kutadi.
- Server so'rovni ishlaydi va javob yuboradi.
- Short Pollingda, mijoz muntazam ravishda serverga so'rov yuborib, yangilanishlarni tekshiradi.
- Bu oddiy amalga oshirish, ammo tez-tez yangilanishlar uchun samarali emas, chunki har bir so'rov uchun xarajatlar bor.
// Oddiy Short Polling misoli function checkUpdates() { fetch('/api/updates') .then(response => response.json()) .then(data => { // Olingan ma'lumotlarni qayta ishlash }) .finally(() => { setTimeout(checkUpdates, 5000); // 5 sekunddan keyin takrorlash }); } checkUpdates(); -
Long Polling:
- Mijoz serverga so'rov yuboradi, server esa yangi ma'lumotlar bo'lsa yoki timeout o'tgan bo'lsa, ularga javob yuboradi.
- Ma'lumotlar bo'lsa, server darhol javob yuboradi, so'ngra mijoz yangi so'rov yuboradi.
- Bu Short Pollingdan samaraliroq, ammo ma'lumotlarni qabul qilish va keyingi so'rov yuborish orasida kechikishlar mavjud.
-
WebSockets:
- Mijoz va server o'rtasida doimiy, ikki tomonlama bog'lanishni yaratadi.
- Bog'lanish o'rnatilgandan so'ng, har ikkala tomon ham istalgan vaqtda ma'lumot yuborishi va olishi mumkin, qo'shimcha HTTP so'rovlarisiz.
- Bu real vaqtli ilovalar uchun (chatlar, onlayn o'yinlar, bildirishnomalar) ideal.
const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('Bog'lanish o'rnatildi'); socket.send('Salom server!'); }; socket.onmessage = function(event) { console.log('Serverdan xabar:', event.data); }; socket.onclose = function(event) { if (event.wasClean) { console.log(`Toza yopildi, kod=${event.code}, sabab=${event.reason}`); } else { console.error('Bog'lanish uzildi'); } }; socket.onerror = function(error) { console.error('WebSocket xatosi:', error); }; -
Server-Sent Events (SSE):
- Serverga klientga ma'lumot yuborishga imkon beradi, HTTP aloqasi orqali.
- Klient serverdan voqealar oqimiga yoziladi.
- Bu server klientga yangilanishlarni yuborganida, lekin klient javobda ma'lumot yubirmasligi kerak bo'lsa (masalan, yangiliklar oqimi, vazifa progressi) uchun mos keladi.
const eventSource = new EventSource('/api/stream'); eventSource.onmessage = function(event) { console.log('Serverdan olayotgan voqea:', event.data); }; eventSource.onerror = function(error) { console.error('SSE xatosi:', error); eventSource.close(); // Xato bo'lsa, bog'lanishni yopish };
Har bir usulning o'z afzalliklari va kamchiliklari bor, va tanlov ilovaning yangilanish chastotasi, ma'lumot hajmi va ikki tomonlama aloqa ehtiyojlariga qarab amalga oshiriladi.