Skip to content

Zbuduj własny system - Pakiet 2 kursów: Automatyzacje i Budowa Agentów AI

Sprawdź ofertę →

Automatyzacje i Agenci AI

Sprawdź
Devstock Academy
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI
    • Pierwsza Misja AI (darmowy)
    • Automatyzacje i Budowa Agentów AI (n8n 2.0)
  • Blog
  • Kontakt
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI
    • Pierwsza Misja AI (darmowy)
    • Automatyzacje i Budowa Agentów AI (n8n 2.0)
  • Blog
  • Kontakt
Programowanie i Technologie Webowe

WebSockets w JavaScript i Node.js – komunikacja w czasie rzeczywistym

  • 14 paź, 2024
  • Komentarze 0
websocket js node js websocket

W dzisiejszym świecie aplikacji internetowych komunikacja w czasie rzeczywistym stała się nieodłącznym elementem interaktywnych usług online. WebSocket JS to technologia, która umożliwia dwukierunkową komunikację między klientem a serwerem, co pozwala na tworzenie dynamicznych i responsywnych aplikacji. W tym artykule wyjaśnimy, czym są WebSockety i jak wykorzystać je w JavaScript i Node.js. Przedstawimy również krok po kroku, jak zbudować prostą aplikację chatową, demonstrując praktyczne zastosowanie tej technologii.

JavaScript – co to jest i jak zacząć naukę?

Czym są WebSockety?

WebSocket to protokół komunikacyjny, który umożliwia utrzymanie stałego połączenia między klientem a serwerem przez jedno gniazdo TCP. W przeciwieństwie do tradycyjnych połączeń HTTP, gdzie klient musi inicjować każde żądanie, WebSocket pozwala na dwukierunkową komunikację w czasie rzeczywistym. Dzięki temu zarówno klient, jak i serwer mogą wysyłać dane w dowolnym momencie, bez konieczności ciągłego nawiązywania nowych połączeń.

WebSocket API jest dostępne w większości nowoczesnych przeglądarek, co ułatwia integrację tej technologii w aplikacjach webowych.

Dokumentacja WebSocket API na MDN Web Docs

Jak działa protokół WebSocket?

Proces komunikacji z użyciem protokołu WebSocket rozpoczyna się od tzw. handshake WebSocket, który jest specjalnym żądaniem HTTP. Po ustanowieniu połączenia, komunikacja odbywa się za pomocą ramek WebSocket (WebSocket frames), które mogą zawierać dane w formacie tekstowym lub binarnym.

Stan połączenia WebSocket można monitorować za pomocą właściwości readyState, która informuje o aktualnym statusie połączenia.

Kurs programowania z gwarancją pracy - banner

Implementacja WebSocket w Node.js

Aby stworzyć serwer WebSocket w Node.js, możemy skorzystać z biblioteki ws, która jest lekką i wydajną implementacją serwera i klienta WebSocket.

Instalacja biblioteki ws

npm install ws

Tworzenie serwera WebSocket

const WebSocket = require('ws');

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

wss.on('connection', function connection(ws) {
  console.log('Nowe połączenie WebSocket');

  ws.on('message', function incoming(message) {
    console.log('Otrzymano wiadomość: %s', message);
    // Odesłanie wiadomości do wszystkich klientów
    wss.clients.forEach(function each(client) {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });

  ws.on('close', function close() {
    console.log('Połączenie WebSocket zamknięte');
  });

  ws.on('error', function error(error) {
    console.log('Błąd WebSocket:', error);
  });
});

W powyższym kodzie tworzymy WebSocketServer nasłuchujący na porcie 8080. Obsługujemy zdarzenia:

  • connection – nawiązanie nowego połączenia.

  • message – otrzymanie wiadomości od klienta.

  • close – zamknięcie połączenia.

  • error – wystąpienie błędu.

Implementacja klienta WebSocket w JavaScript

Po stronie klienta korzystamy z wbudowanego WebSocket API dostępnego w przeglądarce.

Tworzenie połączenia WebSocket

const socket = new WebSocket('ws://localhost:8080');

socket.onopen = function(event) {
  console.log('Połączenie WebSocket otwarte');
};

socket.onmessage = function(event) {
  console.log('Otrzymano wiadomość:', event.data);
  // Wyświetlenie wiadomości w interfejsie użytkownika
};

socket.onclose = function(event) {
  console.log('Połączenie WebSocket zamknięte');
};

socket.onerror = function(error) {
  console.log('Błąd WebSocket:', error);
};

// Wysłanie wiadomości
function wyslijWiadomosc(wiadomosc) {
  if (socket.readyState === WebSocket.OPEN) {
    socket.send(wiadomosc);
  }
}

Obsługujemy zdarzenia:

  • onopen – po otwarciu połączenia.

  • onmessage – po otrzymaniu wiadomości od serwera.

  • onclose – po zamknięciu połączenia.

  • onerror – w przypadku błędu.

Budowa aplikacji chatowej – krok po kroku

1. Przygotowanie środowiska

  • Upewnij się, że masz zainstalowane Node.js i npm.

  • Utwórz nowy folder projektu i zainicjuj go poleceniem npm init -y.

2. Instalacja zależności

Zainstaluj bibliotekę ws:

npm install ws

Oficjalna strona biblioteki ws na GitHubie

3. Tworzenie serwera WebSocket

Utwórz plik server.js i wklej kod serwera z poprzedniej sekcji.

4. Tworzenie klienta HTML

Utwórz plik index.html:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <title>Chat WebSocket</title>
</head>
<body>
  <h1>Chat WebSocket</h1>
  <div id="wiadomosci"></div>
  <input type="text" id="wiadomoscInput" placeholder="Wpisz wiadomość">
  <button id="wyslijBtn">Wyślij</button>

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

    socket.onopen = function() {
      console.log('Połączenie WebSocket otwarte');
    };

    socket.onmessage = function(event) {
      const wiadomosciDiv = document.getElementById('wiadomosci');
      const nowaWiadomosc = document.createElement('p');
      nowaWiadomosc.textContent = event.data;
      wiadomosciDiv.appendChild(nowaWiadomosc);
    };

    socket.onclose = function() {
      console.log('Połączenie WebSocket zamknięte');
    };

    socket.onerror = function(error) {
      console.log('Błąd WebSocket:', error);
    };

    const wyslijBtn = document.getElementById('wyslijBtn');
    wyslijBtn.addEventListener('click', function() {
      const wiadomoscInput = document.getElementById('wiadomoscInput');
      const wiadomosc = wiadomoscInput.value;
      if (wiadomosc) {
        socket.send(wiadomosc);
        wiadomoscInput.value = '';
      }
    });
  </script>
</body>
</html>

5. Uruchomienie serwera HTTP

Aby serwować plik HTML, możemy użyć prostego serwera HTTP. Zainstalujmy pakiet http-server:

npm install -g http-server

Uruchom serwer w katalogu projektu:

http-server
Zrzut ekranu przedstawiający działającą aplikację chatową. websocket js node js websocket
Zrzut ekranu przedstawiający działającą aplikację chatową.

6. Testowanie aplikacji

  • Uruchom server.js poleceniem node server.js.

  • Otwórz przeglądarkę i przejdź do adresu http://localhost:8080.

  • Otwórz drugą kartę lub przeglądarkę i połącz się do tej samej strony.

  • Wpisz wiadomość i obserwuj, jak jest przesyłana między klientami w czasie rzeczywistym.

Zaawansowane funkcje WebSocket

Obsługa binarnego typu danych

WebSocket pozwala na przesyłanie danych binarnych. Można ustawić właściwość binaryType na 'arraybuffer' lub 'blob'.

socket.binaryType = 'arraybuffer';

Monitorowanie stanu połączenia

Właściwość readyState informuje o aktualnym stanie połączenia:

  • 0 – CONNECTING

  • 1 – OPEN

  • 2 – CLOSING

  • 3 – CLOSED

if (socket.readyState === WebSocket.OPEN) {
  // Połączenie jest otwarte
}

Użycie subprotokołów WebSocket

Subprotokoły WebSocket pozwalają na rozszerzenie funkcjonalności protokołu. Można je określić podczas tworzenia połączenia.

const socket = new WebSocket('ws://localhost:8080', 'chat-protocol');

Bezpieczeństwo i optymalizacja

Bezpieczne połączenia WebSocket

Używaj protokołu wss:// zamiast ws:// do nawiązywania bezpiecznych połączeń przez TLS/SSL.

const socket = new WebSocket('wss://secure.example.com');

Obsługa błędów i zamykanie połączeń

Obsługuj zdarzenia onerror i onclose, aby zapewnić stabilność aplikacji.

socket.onclose = function(event) {
  console.log('Kod zamknięcia:', event.code);
  console.log('Powód zamknięcia:', event.reason);
};

Utrzymywanie połączenia (Keep-alive)

Aby utrzymać połączenie, można wysyłać regularne wiadomości typu ping/pong.

Alternatywy dla WebSocket

Chociaż WebSocket jest potężnym narzędziem, istnieją również inne technologie umożliwiające komunikację w czasie rzeczywistym, takie jak:

  • Server-Sent Events (SSE)

  • Long Polling

  • WebRTC

Podsumowanie

WebSocket w JavaScript i Node.js to potężne narzędzie umożliwiające tworzenie aplikacji komunikujących się w czasie rzeczywistym. Dzięki prostocie implementacji i wsparciu w nowoczesnych przeglądarkach, WebSocket staje się standardem w budowaniu interaktywnych aplikacji webowych. Mamy nadzieję, że ten artykuł pomógł Ci zrozumieć podstawy i zachęcił do eksperymentowania z własnymi projektami.

Diagram ilustrujący przepływ danych między klientem a serwerem przy użyciu WebSocket - node js websocket websocket js

Zapraszamy do dalszego zgłębiania technologii webowych i tworzenia własnych aplikacji w czasie rzeczywistym z wykorzystaniem WebSocket w JavaScript i Node.js. Twoja przygoda z programowaniem dopiero się zaczyna!

Udostępnij na:
Wzorce projektowe w JavaScript – najlepsze praktyki
Web3.js – wprowadzenie do programowania blockchain w JavaScript

Zostaw komentarz :) Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Baner reklamowy odzyskaj 10h tygodniowo

Najnowsze wpisy

Thumb
Dlaczego drożeje pamięć RAM? 5 faktów o
16 sty, 2026
Thumb
Dlaczego coraz więcej programistów wybiera MacBooka Pro?
09 sty, 2026
Thumb
Samuel Altman: od non-profitu do imperium. Sześć
07 sty, 2026

Kursy Samodzielne

  • Grafika promocyjna kursu z tytułem "KURS – AUTOMATYZACJE I BUDOWANIE AGENTÓW AI" z wyraźnym oznaczeniem narzędzia "n8n 2.0".
    Pakiet 2 kursów: Automatyzacje i Budowa Agentów AI
    3980,00 zł
Banner reklamowy- system AI pracuje gdy śpisz
klarna raty 0% - banner
Droga do kariery z Akademią Devstock
Banner reklamowy whitepress
Banner reklamowy - stwórz własną armię agentów AI

Tagi

5G AI Architektura Cyberbezpieczeństwo Feedback Frontend Git IoT JavaScript Motywacja Nauka efektywna Optymalizacja i wydajność Programowanie React.JS Rozwój osobisty WebDevelopment
Logo FitBody Center Warszawa
Dołącz do społeczności DEVSTOCK - banner reklamowy

Produkty

  • Grafika promocyjna kursu z tytułem "KURS – AUTOMATYZACJE I BUDOWANIE AGENTÓW AI" z wyraźnym oznaczeniem narzędzia "n8n 2.0".
    Pakiet 2 kursów: Automatyzacje i Budowa Agentów AI
    3980,00 zł

Odkryj zabiegi Endermologii LPG Infinity w FitBody Center Warszawa

Maszyna zabiegowa - endermologia lpg infinity
Group-5638-1

Devstock – Akademia programowania z gwarancją pracy

🏠 ul. Bronowska 5a,
03-995 Warszawa
📞 +48 517 313 589
✉️ contact@devstockacademy.pl

Linki

  • Poznaj firmę Devstock
  • Wejdź do społeczności Devstock
  • Polityka prywatności
  • Regulamin

FitBody Center

Strona

  • Strona główna
  • Kontakt

Newsletter

Bądź na bieżąco, otrzymuj darmową wiedzę i poznaj nas lepiej!


Icon-facebook Icon-linkedin2 Icon-instagram Icon-youtube Tiktok
Copyright 2026 Devstock. Wszelkie prawa zastrzeżone
Devstock AcademyDevstock Academy
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in
grafika reklamowa pakietu kursów automatyzaje i budowa agentów ai