Programmering av WebSockets og sanntidssystemer · leksjon

Sanntidsdatadashbord

Implementer systemer som sender direkte dataoppdateringer til dashbord for umiddelbar innsikt og visualisering.

Leksjon 3 av 411 trinn

Sanntidsdatadashbord er en gratis leksjon i Programmering av WebSockets og sanntidssystemer på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Programmering av WebSockets og sanntidssystemer, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Programmering av WebSockets og sanntidssystemer inneholder totalt 4 leksjoner.

Sanntidsdashbord avduket

Hva er sanntidsdatadashbord? Det er dynamiske grensesnitt som viser informasjon som oppdateres kontinuerlig. Tenk på dem som skjermer som alltid overvåker dataene dine.

  • Umiddelbar innsikt: Se endringer mens de skjer, ikke flere timer senere.
  • Raske beslutninger: Reager umiddelbart på kritiske hendelser eller trender.
  • Forbedret overvåking: Følg med på systemtilstand, finansmarkeder eller IoT-enheter.

WebSockets egner seg perfekt til å sende disse oppdateringene direkte til nettleseren din.

Slik fungerer sanntidsdashbord

Å bygge et sanntidsdashbord innebærer at noen viktige deler fungerer sammen:

  • Datakilde: Der rådataene dine kommer fra (for eksempel sensorer, API-er eller databaser).
  • Server: Behandler data og sender dem deretter til klienter ved hjelp av WebSockets.
  • Klient (dashbord): Nettleseren din, som mottar data og oppdaterer visningen.

Denne arkitekturen sikrer at data flyter kontinuerlig fra kilde til skjerm og gir umiddelbare oppdateringer.

Klargjør datastrømmen

For et dashbord kommer data ofte som en strøm av hendelser eller måleverdier. Hver datadel bør være kortfattet og meningsfull.

En vanlig og effektiv fremgangsmåte er å sende data som JSON-objekter. Da blir det enkelt for både serveren å opprette dataene og klienten å tolke dem.

Eksempel på datastruktur: { "metricName": "temperature", "value": 23.5, "timestamp": "..." }

Server: Generere data

La oss begynne på serversiden. Vi bruker Node.js til å simulere en strøm av sanntidsdata, for eksempel en sensoravlesning.

Denne kodesnutten genererer en tilfeldig «temperature»-verdi hvert sekund og logger den. Deretter integrerer vi dette med WebSockets for å sende verdien til klienter.

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: Sende data til klienter

Nå skal vi gjøre datageneratoren vår om til en WebSocket-server. Vi bruker ws-biblioteket til å opprette tilkoblinger og sende de simulerte dataene våre.

Når en klient kobler seg til, begynner serveren å sende oppdateringer. Husk å installere ws: 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');

Klient: Dashbordoppsett

På klientsiden trenger vi en enkel HTML-side for å vise dataene våre. Vi oppretter en grunnleggende struktur og inkluderer JavaScript for å håndtere WebSocket-tilkoblingen.

<div id="data-display"></div> blir stedet der de løpende temperaturoppdateringene vises.

<!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>

Klient: Håndtere løpende data

Nå skal vi legge til den avgjørende delen: å motta meldinger fra serveren og oppdatere dashbordet.

Hendelseslytteren ws.onmessage utløses hver gang serveren sender nye data. Vi analyserer den innkommende JSON-en og oppdaterer elementet data-display med den nyeste temperaturen.

<!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>

Mer enn enkel tekst

Selv om det er nyttig å vise råtekst, er det visualiseringer som virkelig får dashbord til å skinne. For mer avanserte dashbord kan du integrere diagrambiblioteker som Chart.js eller D3.js.

Disse bibliotekene kan bruke de innkommende dataene til å oppdatere grafer, målere eller andre visuelle elementer i sanntid. Grunnprinsippet er fortsatt det samme: motta JSON-data og deretter oppdatere brukergrensesnittet.

Tips for robusthet og ytelse

Å bygge produksjonsklare dashbord innebærer mer enn bare å sende data. Vurder disse punktene for en stabil og sikker opplevelse:

  • Feilhåndtering: Hva skjer hvis serveren sender feilformatert data?
  • Logikk for ny tilkobling: Prøv automatisk å koble til på nytt hvis WebSocket-tilkoblingen brytes.
  • Begrensning av dataflyt: Unngå å overbelaste klienten med for mange oppdateringer per sekund.
  • Autentisering: Sørg for at bare autoriserte brukere ser sensitive data.

Kontroll av dashbordkomponenter

Et dashbord for sanntidsdata er avhengig av flere viktige komponenter for å fungere effektivt.

Oppsummering av sanntidsdashbord

I denne leksjonen utforsket vi hvordan man bygger dashbord for sanntidsdata ved hjelp av WebSockets.

  • Vi forsto den arkitektoniske flyten fra datakilde til server og videre til klientens brukergrensesnitt.
  • Vi så hvordan man kan simulere løpende data på serveren og sende dem via WebSockets.
  • På klientsiden lærte vi å koble til, motta og vise disse kontinuerlige oppdateringene.

WebSockets er et kraftig verktøy for å gi data liv, levere umiddelbar innsikt og legge til rette for raskere beslutninger.

Gratis å komme i gang

Lær deg Programmering av WebSockets og sanntidssystemer med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
47

Ofte stilte spørsmål

Er leksjonen «Sanntidsdatadashbord» gratis?

Ja – hele teksten i «Sanntidsdatadashbord» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Programmering av WebSockets og sanntidssystemer-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Programmering av WebSockets og sanntidssystemer inneholder totalt 4 leksjoner.

Hva lærer jeg i «Sanntidsdatadashbord»?

Implementer systemer som sender direkte dataoppdateringer til dashbord for umiddelbar innsikt og visualisering. Du øver på Programmering av WebSockets og sanntidssystemer med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Programmering av WebSockets og sanntidssystemer?

Ingen tidligere erfaring er nødvendig. Programmering av WebSockets og sanntidssystemer på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Sanntidsdatadashbord»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Programmering av WebSockets og sanntidssystemer-leksjonen?

Ja. Alle Programmering av WebSockets og sanntidssystemer-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Samarbeidsredigerere og digitale tavler
  2. Direktechat og spillservere
  3. Sanntidsdatadashbord
  4. Bygg et sanntidssystem for posisjonssporing
← Tilbake til Programmering av WebSockets og sanntidssystemer