Sobes.tech
Junior

Сервер менен кардар ортосундагы байланыштын бир нече жолдорун сүрөттөп бериңиз.

sobes.tech AI

AIден жооп

Клиент (браузер) менен сервердин ортосунда байланыштын негизги жолдору бар.

  1. 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();
    
  2. Long Polling:

    • Клиент суроо жиберет, ал сервер тарабынан ачылат, жаңы маалыматтар пайда болгонго чейин же убакыт аяктагандан кийин.
    • Маалымат пайда болгондо, сервер дароо жооп берет, андан кийин клиент жаңы суроо жиберет.
    • Short Pollingге караганда натыйжалуу, бирок маалыматтарды алуу жана кийинки суроону жиберүү аралыгында кечигүү бар.
  3. 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);
    };
    
  4. 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(); // Ката болгондо байланышты жабуу
    };
    

Ар бир ыкма өзүнүн артыкчылыктары жана кемчиликтери бар, жана тандоо колдонмонун талаптарына, жаңыртуулардын тездигине, маалымат көлөмүнө жана эки тараптуу байланыштын зарылдыгына көз каранды.