Junior
Сервер менен кардар ортосундагы байланыштын бир нече жолдорун сүрөттөп бериңиз.
sobes.tech AI
AIден жооп
Клиент (браузер) менен сервердин ортосунда байланыштын негизги жолдору бар.
-
HTTP/HTTPS (Polling/Short Polling):
- Клиент серверге суроо жиберет жана жооп күтөт.
- Сервер суроону иштетип, жооп жиберет.
- Short Polling учурда, клиент мезгил-мезгили менен серверге суроо жиберет, жаңыртуулар бар-жогун текшерүү үчүн.
- Ишке ашыруу оңой, бирок тез жаңыртуулар үчүн эффективдүү эмес, ар бир суроо үчүн кошумча чыгымдар менен.
// Жөнөкөй Short Polling мисалы function checkUpdates() { fetch('/api/updates') .then(response => response.json()) .then(data => { // Алынган маалыматтарды иштетүү }) .finally(() => { setTimeout(checkUpdates, 5000); // 5 секунддан кийин кайталоо }); } checkUpdates(); -
Long Polling:
- Клиент суроо жиберет, ал сервер тарабынан ачылат, жаңы маалыматтар пайда болгонго чейин же убакыт аяктагандан кийин.
- Маалымат пайда болгондо, сервер дароо жооп берет, андан кийин клиент жаңы суроо жиберет.
- Short Pollingге караганда натыйжалуу, бирок маалыматтарды алуу жана кийинки суроону жиберүү аралыгында кечигүү бар.
-
WebSockets:
- Клиент жана сервер ортосунда туруктуу эки тараптуу байланыш түзөт.
- Байланыш орнотулгандан кийин, эки тарап да каалаган убакта маалымат жибере жана кабыл алат, кошумча HTTP суроолорсуз.
- Реал убакыт колдонмолору үчүн идеалдуу (чаттар, онлайн оюндар, кабарламалар).
const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('Байланыш түзүлдү'); socket.send('Салам, сервер!'); }; socket.onmessage = function(event) { console.log('Серверден келген билдирүү:', event.data); }; socket.onclose = function(event) { if (event.wasClean) { console.log(`Байланыш таза жабылды, код=${event.code}, себеби=${event.reason}`); } else { console.error('Байланыш үзүлдү'); } }; socket.onerror = function(error) { console.error('WebSocket ката:', error); }; -
Server-Sent Events (SSE):
- Серверге бир тараптуу маалыматтарды HTTP аркылуу жиберүүгө мүмкүндүк берет.
- Клиент серверден окуялар агымына жазылат.
- Бул ыкма, сервер жаңыртууларды жөнөтүп жатканда, бирок клиент жооп катары маалымат жибербейт (мисалы, жаңылыктар агымы, тапшырманын прогрессин көрсөтүү үчүн).
const eventSource = new EventSource('/api/stream'); eventSource.onmessage = function(event) { console.log('Серверден алынган окуя:', event.data); }; eventSource.onerror = function(error) { console.error('SSE ката:', error); eventSource.close(); // Ката болгондо байланышты жабуу };
Ар бир ыкма өзүнүн артыкчылыктары жана кемчиликтери бар, жана тандоо колдонмонун талаптарына, жаңыртуулардын тездигине, маалымат көлөмүнө жана эки тараптуу байланыштын зарылдыгына көз каранды.