Programmering av WebSockets og sanntidssystemer · leksjon

Bygg et sanntidssystem for posisjonssporing

Bruk sanntidsmønstre i en casestudie for live GPS-sporing: strøm enhetsposisjoner, begrens oppdateringsfrekvensen, og gjengi bevegelige markører på et delt kart.

Leksjon 4 av 413 trinn

Bygg et sanntidssystem for posisjonssporing er en gratis leksjon i Programmering av WebSockets og sanntidssystemer på CoddyKit. Dette er leksjon 4 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.

Brukstilfellet sporing

Samkjørings-, leverings- og flåteapper trenger alle sanntidssporing av posisjon: Enheter sender koordinater, og kontrollpaneler viser markører som beveger seg i sanntid.

Systemkomponenter

Et sporingssystem har tre roller:

  • Produsenter (mobile enheter) sender posisjoner
  • Serveren videresender posisjoner etter rom/område
  • Konsumenter (seere) abonnerer på et kjøretøy eller en sone

Posisjonsmeldingen

Hold nyttelastene små. Breddegrad, lengdegrad, et tidsstempel og enhets-ID-en er vanligvis nok.

{
  "id": "veh-42",
  "lat": 41.0082,
  "lng": 28.9784,
  "ts": 1717000000000
}

Begrense enhetsoppdateringer

GPS-brikker kan sende posisjoner hvert 100. millisekund. Det overbelaster nettverket. Begrens til én oppdatering per sekund på enheten.

let last = 0;
function maybeSend(pos) {
  const now = Date.now();
  if (now - last < 1000) return;
  last = now;
  socket.send(JSON.stringify(pos));
}

Serverbaserte rom per kjøretøy

Hvert kjøretøy får sitt eget rom. Seere blir med i rommet til kjøretøyet de er interessert i, slik at serveren bare videresender relevante oppdateringer.

const rooms = new Map();
function broadcast(vehicleId, msg) {
  const subs = rooms.get(vehicleId) || [];
  for (const ws of subs) ws.send(msg);
}

Jevne ut markørbevegelser

Det ser hakkete ut når markører hopper mellom punkter. Interpoler på klienten mellom den forrige og den nye posisjonen gjennom oppdateringsintervallet.

function lerp(a, b, t) {
  return a + (b - a) * t;
}
console.log(lerp(0, 10, 0.5));

Håndtere inaktive enheter

Hvis en enhet slutter å sende i 30 sekunder, markerer du den som frakoblet på kartet i stedet for å la en fryst markør stå.

function isStale(lastTs) {
  return Date.now() - lastTs > 30000;
}

Redusere båndbredden ytterligere

For tettpakkede flåter kan du samle mange kjøretøyoppdateringer i én melding hvert sekund i stedet for å sende én melding per kjøretøy.

{
  "ts": 1717000000000,
  "vehicles": [
    {"id":"v1","lat":41.0,"lng":29.0},
    {"id":"v2","lat":41.1,"lng":29.1}
  ]
}

Lagre spor

Sanntid brukes til livevisningen. Lagre posisjonshistorikken i en tidsseriedatabase, slik at brukerne kan spille av en tur senere.

Skalere på tvers av regioner

Bruk en pub/sub-ryggrad (Redis eller NATS), slik at en seer som er koblet til en hvilken som helst servernode, kan følge et kjøretøy som rapporterer til en annen node.

Personvernhensyn

Posisjonsdata er sensitive. Autoriser hvert abonnement, vis bare kjøretøyene en bruker har tilgang til, og reduser presisjonen når full nøyaktighet ikke er nødvendig.

Kort kontroll

Hvorfor bør du begrense GPS-oppdateringer på enheten før du sender dem?

Oppsummering

Du har bygget en sanntidssporing av posisjon:

  • Små posisjonsnyttelaster som begrenses på enheten
  • Rom per kjøretøy og valgfri samling av oppdateringer
  • Interpolering på klientsiden og oppdagelse av inaktive enheter
  • Pub/sub for skalering på tvers av regioner og streng autorisering
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 «Bygg et sanntidssystem for posisjonssporing» gratis?

Ja – hele teksten i «Bygg et sanntidssystem for posisjonssporing» 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 «Bygg et sanntidssystem for posisjonssporing»?

Bruk sanntidsmønstre i en casestudie for live GPS-sporing: strøm enhetsposisjoner, begrens oppdateringsfrekvensen, og gjengi bevegelige markører på et delt kart. 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 4 av 4.

Hvor lang tid tar leksjonen «Bygg et sanntidssystem for posisjonssporing»?

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