Programmeren van WebSockets en realtime-systemen · Les

Realtime datadashboards

Implementeer systemen die livegegevens naar dashboards pushen voor directe inzichten en visualisaties.

Les 3 van 411 stappen

Realtime datadashboards is een gratis Programmeren van WebSockets en realtime-systemen-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Programmeren van WebSockets en realtime-systemen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Programmeren van WebSockets en realtime-systemen bevat in totaal 4 lessen.

Realtimegegevensdashboards onthuld

Wat zijn realtimegegevensdashboards? Het zijn dynamische interfaces die live, voortdurend bijgewerkte informatie tonen. Je kunt ze zien als altijd ingeschakelde monitors voor je gegevens.

  • Direct inzicht: zie wijzigingen terwijl ze gebeuren, niet pas uren later.
  • Snelle beslissingen: reageer onmiddellijk op kritieke gebeurtenissen of trends.
  • Verbeterde monitoring: houd de systeemstatus, financiële markten of IoT-apparaten in de gaten.

WebSockets zijn ideaal om deze updates rechtstreeks naar je browser te sturen.

Hoe realtimegegevensdashboards werken

Bij het bouwen van een realtimegegevensdashboard werken enkele belangrijke onderdelen samen:

  • Gegevensbron: de plaats waar je onbewerkte gegevens vandaan komen (bijvoorbeeld sensoren, API's of databases).
  • Server: verwerkt gegevens en stuurt ze vervolgens via WebSockets naar clients.
  • Client (dashboard): je webbrowser, die gegevens ontvangt en de weergave bijwerkt.

Deze architectuur zorgt ervoor dat gegevens voortdurend van de bron naar het scherm stromen en direct worden bijgewerkt.

Je gegevensstroom voorbereiden

Voor een dashboard komen gegevens vaak binnen als een stroom gebeurtenissen of meetwaarden. Elk gegeven moet beknopt en betekenisvol zijn.

Een gebruikelijke en efficiënte aanpak is om gegevens als JSON-objecten te verzenden. Zo kunnen zowel de server als de client ze eenvoudig maken en parseren.

Voorbeeld van een gegevensstructuur: { "metricName": "temperature", "value": 23.5, "timestamp": "..." }

Server: gegevens genereren

Laten we beginnen aan de serverkant. We gebruiken Node.js om een stroom livegegevens, zoals een sensorwaarde, te simuleren.

Dit fragment genereert elke seconde een willekeurige waarde voor "temperature" en schrijft die naar het logboek. Vervolgens integreren we dit met WebSockets om de waarde naar clients te sturen.

const intervalId = setInterval(() => {
  const temperature = 20 + Math.random() * 5; // Simulate temp
  const data = {
    metric: "temperature",
    value: parseFloat(temperature.toFixed(2)),
    timestamp: new Date().toISOString()
  };
  console.log("Generated data:", JSON.stringify(data));
  // This data will soon be sent over WebSocket
}, 1000);

console.log("Data generator started.");

// To stop after 10 seconds for demonstration:
// setTimeout(() => {
//   clearInterval(intervalId);
//   console.log("Data generator stopped.");
// }, 10000);

Server: gegevens naar clients verzenden

Laten we onze datagenerator nu omzetten in een WebSocket-server. We gebruiken de bibliotheek ws om verbindingen tot stand te brengen en onze gesimuleerde gegevens te verzenden.

Wanneer een client verbinding maakt, begint onze server updates te pushen. Vergeet niet om ws te installeren: npm install ws.

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

wss.on('connection', ws => {
  console.log('Client connected!');

  const interval = setInterval(() => {
    const temperature = 20 + Math.random() * 5;
    const data = {
      metric: "temperature",
      value: parseFloat(temperature.toFixed(2)),
      timestamp: new Date().toISOString()
    };
    ws.send(JSON.stringify(data));
  }, 1000);

  ws.on('close', () => {
    console.log('Client disconnected.');
    clearInterval(interval); // Stop sending data
  });

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

console.log('WebSocket server started on port 8080');

Client: dashboardindeling

Aan de clientkant hebben we een eenvoudige HTML-pagina nodig om onze gegevens weer te geven. We maken een basisstructuur en voegen JavaScript toe om de WebSocket-verbinding af te handelen.

De <div id="data-display"></div> is de plek waar onze actuele temperatuurupdates verschijnen.

<!DOCTYPE html>
<html>
<head>
  <title>Realtime Dashboard</title>
  <style> body { font-family: sans-serif; } </style>
</head>
<body>
  <h1>Live Temperature Monitor</h1>
  <div id="data-display">Connecting...</div>

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

    ws.onopen = () => {
      console.log('Connected to WebSocket server!');
      document.getElementById('data-display').innerText = 'Waiting for data...';
    };

    ws.onerror = error => {
      console.error('WebSocket Error:', error);
      document.getElementById('data-display').innerText = 'Connection Error!';
    };

    ws.onclose = () => {
      console.log('Disconnected from WebSocket server.');
      document.getElementById('data-display').innerText = 'Disconnected.';
    };

    // Data handling logic will go here next!
  </script>
</body>
</html>

Client: actuele gegevens verwerken

Laten we nu het belangrijkste onderdeel toevoegen: berichten van de server ontvangen en ons dashboard bijwerken.

De gebeurtenislistener ws.onmessage wordt geactiveerd telkens wanneer de server nieuwe gegevens verzendt. We parseren de binnenkomende JSON en werken het element data-display bij met de meest recente temperatuur.

<!DOCTYPE html>
<html>
<head>
  <title>Realtime Dashboard</title>
  <style> body { font-family: sans-serif; } </style>
</head>
<body>
  <h1>Live Temperature Monitor</h1>
  <div id="data-display">Connecting...</div>

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

    ws.onopen = () => {
      console.log('Connected!');
      document.getElementById('data-display').innerText = 'Waiting for data...';
    };

    ws.onmessage = event => {
      const data = JSON.parse(event.data);
      if (data.metric === "temperature") {
        document.getElementById('data-display').innerHTML = 
          `Temperature: <b>${data.value}°C</b> 
          (at ${new Date(data.timestamp).toLocaleTimeString()})`;
      }
    };

    ws.onerror = error => {
      console.error('WebSocket Error:', error);
      document.getElementById('data-display').innerText = 'Connection Error!';
    };

    ws.onclose = () => {
      console.log('Disconnected.');
      document.getElementById('data-display').innerText = 'Disconnected.';
    };
  </script>
</body>
</html>

Meer dan eenvoudige tekst

Hoewel het weergeven van onbewerkte tekst nuttig is, komen dashboards pas echt tot hun recht met visualisaties. Voor geavanceerdere dashboards zou je grafiekbibliotheken zoals Chart.js of D3.js integreren.

Deze bibliotheken kunnen je binnenkomende gegevens gebruiken om grafieken, meters of andere visuele elementen in realtime bij te werken. Het basisprincipe blijft hetzelfde: ontvang JSON-gegevens en werk vervolgens de gebruikersinterface bij.

Tips voor robuustheid en prestaties

Een dashboard bouwen dat klaar is voor productie omvat meer dan alleen gegevens verzenden. Houd rekening met de volgende punten voor een stabiele en veilige ervaring:

  • Foutafhandeling: Wat gebeurt er als de server verkeerd opgemaakte gegevens verzendt?
  • Logica voor opnieuw verbinden: Probeer automatisch opnieuw verbinding te maken als de WebSocket-verbinding wordt verbroken.
  • Gegevens beperken: Voorkom dat je de client overspoelt met te veel updates per seconde.
  • Authenticatie: Zorg ervoor dat alleen bevoegde gebruikers gevoelige gegevens kunnen zien.

Controle van dashboardonderdelen

Een dashboard met realtime gegevens is afhankelijk van verschillende belangrijke onderdelen om goed te functioneren.

Samenvatting van realtime dashboards

In deze les hebben we onderzocht hoe je dashboards met realtime gegevens bouwt met WebSockets.

  • We hebben de architectuurstroom van gegevensbron naar server naar gebruikersinterface van de client begrepen.
  • We hebben gezien hoe je actuele gegevens op de server simuleert en deze via WebSockets pusht.
  • Aan de clientkant hebben we geleerd hoe je deze doorlopende updates kunt verbinden, ontvangen en weergeven.

WebSockets zijn een krachtig hulpmiddel om gegevens tot leven te brengen. Ze bieden direct inzicht en maken snellere beslissingen mogelijk.

Gratis beginnen

Leer Programmeren van WebSockets en realtime-systemen met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
47

Veelgestelde vragen

Is de les “Realtime datadashboards” gratis?

Ja — de volledige tekst van “Realtime datadashboards” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Programmeren van WebSockets en realtime-systemen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Programmeren van WebSockets en realtime-systemen bevat in totaal 4 lessen.

Wat leer ik in “Realtime datadashboards”?

Implementeer systemen die livegegevens naar dashboards pushen voor directe inzichten en visualisaties. Je oefent met Programmeren van WebSockets en realtime-systemen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Programmeren van WebSockets en realtime-systemen te beginnen?

Ervaring vooraf is niet nodig. Programmeren van WebSockets en realtime-systemen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Realtime datadashboards”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Programmeren van WebSockets en realtime-systemen?

Ja. Elke les over Programmeren van WebSockets en realtime-systemen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Samenwerkingseditors en whiteboards
  2. Livechat- en gamingservers
  3. Realtime datadashboards
  4. Een realtime locatievolgsysteem bouwen
← Terug naar Programmeren van WebSockets en realtime-systemen