CodeGym /Kurslar /Frontend SELF AZ /WebSocket-ə giriş

WebSocket-ə giriş

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

6.1 WebSocket haqqında əsas anlayışlar

WebSocket — bu, bir TCP bağlantısı üzərindən tam dupleksli bağlantı təmin edən bir protokoldur. Bu protokol klient və server arasında iki tərəfli məlumat ötürülməsini dəstəkləyir və onu çatlar, onlayn oyunlar və bildiriş sistemləri kimi real vaxtlı məlumat mübadiləsi tələb edən tətbiqlər üçün ideal edir.

WebSocket'ın üstünlükləri

  1. İki tərəfli əlaqə: WebSocket server və klientin bir-birinə istənilən vaxt mesaj göndərməsini təmin edən iki tərəfli məlumat ötürülməsi ilə təmin edir.
  2. Az gecikmə: ənənəvi HTTP sorğuları ilə müqayisədə, WebSocket davamlı bağlantı səbəbindən gecikməni azaldır.
  3. Serverə az yük: WebSocket HTTP sorğularının sayını azaldır, bu da server yüklənməsini azaldır.

WebSocket'ın əsas komponentləri

  1. WebSocket server: WebSocket bağlantılarını qəbul edən və emal edən server hissəsi.
  2. WebSocket klient: WebSocket server ilə əlaqəni təmin edən və məlumat mübadiləsi edən klient hissəsi.

6.2 JavaScript-də WebSocket ilə İş

JavaScript-də WebSocket ilə iş WebSocket obyektindən istifadə etməklə həyata keçirilir. Bu obyekt əlaqənin qurulması, mesajların göndərilməsi və alınması, həmçinin hadisələrin emalı üçün metodlar təqdim edir.

WebSocket-bağlantısının yaradılması:

JavaScript
    
      const socket = new WebSocket('ws://server.example.com/chat');
    
  

WebSocket-in Hadisələri:

  1. open: əlaqə qurulduqda baş verir.
  2. message: serverdən mesaj alındıqda baş verir.
  3. error: xətalar baş verdikdə baş verir.
  4. close: əlaqə bağlandıqda baş verir.

WebSocket-in istifadə nümunəsi:

JavaScript
    
      const socket = new WebSocket('ws://server.example.com/chat');

      socket.addEventListener('open', (event) => {
        console.log('WebSocket serverinə qoşuldu');
        socket.send('Salam Server!');
      });

      socket.addEventListener('message', (event) => {
        console.log('Serverdən mesaj:', event.data);
      });

      socket.addEventListener('error', (event) => {
        console.error('WebSocket xətası:', event);
      });

      socket.addEventListener('close', (event) => {
        console.log('WebSocket serverindən bağlantı kəsildi');
      });
    
  

6.3 WebSocket serverinin Node.js-də nümunəsi

WebSocket serveri yaratmaq üçün Node.js-də ws kitabxanasından istifadə etmək olar.

Kitabxananın quraşdırılması:

Terminal
    
      npm install ws
    
  

WebSocket serverinin nümunəsi:

JavaScript
    
      const WebSocket = require('ws');
      const wss = new WebSocket.Server({ port: 8080 });

      wss.on('connection', (ws) => {
        console.log('Yeni müştəri qoşuldu');

        ws.on('message', (message) => {
          console.log('Alındı:', message);
          ws.send(`Server deyir: ${message}`);
        });

        ws.on('close', () => {
          console.log('Müştəri ayrıldı');
        });
      });

      console.log('WebSocket serveri ws://localhost:8080 ünvanında işləyir');
    
  

6.4 WebSocket-in əsas hadisələri və metodları

Klient hadisələri:

  • onopen: WebSocket bağlantısı qurulduqda işə düşür
  • onmessage: serverdən mesaj alındıqda işə düşür
  • onclose: WebSocket bağlantısı bağlandıqda işə düşür
  • onerror: WebSocket xətası olduqda işə düşür

Klient metodları

  • send(data): serverə məlumat göndərir
  • close(code, reason): göstərilən kod və səbəblə WebSocket bağlantısını bağlayır

Server hadisələri

  • connection: klient serverə qoşulduqda işə düşür
  • message: server klientdən mesaj aldıqda işə düşür
  • close: WebSocket bağlantısı bağlandıqda işə düşür
  • error: WebSocket xətası olduqda işə düşür

Server metodları

  • send(data): klientə məlumat göndərir
  • close(code, reason): göstərilən kod və səbəblə WebSocket bağlantısını bağlayır

6.5 WebSocket istifadəsi nümunələri

Nümunə: Real vaxtda çat

Müştəri tərəfi:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>WebSocket Çat</title>
        </head>
        <body>
          <input type="text" id="message" placeholder="Mesajınızı daxil edin" />
          <button onclick="sendMessage()">Göndər</button>
          <div id="chat"></div>

          <script>
            const socket = new WebSocket('ws://localhost:8080');
            const chat = document.getElementById('chat');

            socket.onopen = function() {
              console.log('WebSocket indi açıqdır.');
            };

            socket.onmessage = function(event) {
              const message = document.createElement('p');
              message.textContent = event.data;
              chat.appendChild(message);
            };

            socket.onclose = function() {
              console.log('WebSocket indi bağlandı.');
            };

            socket.onerror = function(event) {
              console.error('WebSocket xətası müşahidə olundu:', event);
            };

            function sendMessage() {
              const messageInput = document.getElementById('message');
              const message = messageInput.value;
              socket.send(message);
              messageInput.value = '';
            }
          </script>
        </body>
      </html>
    
  

Server tərəfi:

JavaScript
    
      const WebSocket = require('ws');

      const server = new WebSocket.Server({ port: 8080 });

      server.on('connection', (ws) => {
        console.log('Yeni müştəri qoşuldu!');

        ws.on('message', (message) => {
          console.log('Alındı:', message);
          // Mesajın bütün qoşulmuş müştərilərə göndərilməsi
          server.clients.forEach(client => {
            if (client.readyState === WebSocket.OPEN) {
              client.send(message);
            }
          });
        });

        ws.on('close', () => {
          console.log('Müştəri əlaqəni kəsdi');
        });

        ws.on('error', (error) => {
          console.error('WebSocket xətası:', error);
        });
      });

      console.log('WebSocket server ws://localhost:8080 ünvanında işə salındı');
    
  
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION