- de Gateway zelf, en
- voor gebruikers zichtbare clients die met de Gateway zijn verbonden (Mac-app, WebChat, nodes enz.)
Presence-velden (wat wordt weergegeven)
Presence-vermeldingen zijn gestructureerde objecten met velden zoals:instanceId(optioneel, maar sterk aanbevolen): stabiele clientidentiteit (meestalconnect.client.instanceId)host: gebruiksvriendelijke hostnaamip: IP-adres op basis van best effortversion: tekenreeks met de clientversiedeviceFamily/modelIdentifier: hardwareaanwijzingenmode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: seconden sinds de laatste gebruikersinvoer, indien bekendreason: vrije, door de client aangeleverde tekenreeks; de Gateway zelf genereert alleenself,connectendisconnectdeviceId,roles,scopes: apparaatidentiteit en aanwijzingen voor rol/bereik uit de verbindingshandshakets: tijdstempel van de laatste update (ms sinds epoch)
Producenten (waar presence vandaan komt)
Presence-vermeldingen worden door meerdere bronnen geproduceerd en samengevoegd.1) Eigen vermelding van de Gateway
De Gateway maakt bij het opstarten altijd een eigen vermelding aan, zodat gebruikersinterfaces de Gateway-host tonen voordat er clients verbinding maken.2) WebSocket-verbinding
Elke WS-client begint met eenconnect-verzoek. Na een geslaagde handshake
voegt de Gateway een presence-vermelding voor die verbinding toe of werkt deze bij.
Waarom tijdelijke control-plane-verbindingen niet worden weergegeven
CLI-opdrachten, backend-RPC-clients en probes maken vaak kortstondig verbinding. Om te voorkomen dat deze wisselingen gedurende de volledige presence-TTL worden bewaard, worden clients in de moduscli, backend of probe niet omgezet in presence-vermeldingen.
Clients in testmodus blijven gevolgd, omdat testsuites deze gebruiken als vervanging voor echte clients.
3) system-event-bakens
Clients kunnen uitgebreidere periodieke bakens verzenden via de methode system-event. De Mac-app
gebruikt dit om hostnaam, IP, versie en metadata over beschikbaarheid te rapporteren. Activiteit van
fysieke invoer maakt geen deel uit van dit generieke baken; de speciaal daarvoor bestemde native
nodegebeurtenis die wordt beschreven in Presence van actieve computer, beheert dit. De
Mac voorziet deze bakens van system-presence-clear-last-input; huidige Gateways gebruiken
deze achterwaarts compatibele markering om recentheid van invoer te verwijderen die door een
oudere app is bewaard. Het baken bevat ook een vaste waarde van 30 dagen, zodat oudere Gateways die
de markering negeren de exacte recentheid overschrijven in plaats van deze te bewaren. Voor deze
compatibiliteitswaarde wordt geen nieuwe activiteit gemeten.
4) Nodeverbindingen (rol: node)
Wanneer een node via de Gateway-WebSocket verbinding maakt metrole: node, voegt de Gateway
een presence-vermelding voor die node toe of werkt deze bij (dezelfde flow als voor andere WS-clients).
Regels voor samenvoegen en ontdubbelen (waarom instanceId belangrijk is)
Presence-vermeldingen worden opgeslagen in één in-memory map, zonder onderscheid tussen hoofdletters
en kleine letters geïndexeerd op de eerste beschikbare waarde, in deze volgorde: een gekoppelde apparaat-id,
connect.client.instanceId of, als laatste redmiddel, de id per verbinding.
Tijdelijke control-plane-clients worden volledig uitgesloten van tracking (zie
hierboven), zodat hun verbindings-id’s nooit sleutels worden. Voor elke andere client betekent de
terugval op de verbindings-id dat een client die opnieuw verbinding maakt zonder een stabiele
instanceId, als een dubbele rij wordt weergegeven.
TTL en begrensde grootte
Presence is bewust tijdelijk:- TTL: vermeldingen ouder dan 5 minuten worden verwijderd
- Maximumaantal vermeldingen: 200 (oudste eerst verwijderd)
Aandachtspunt bij externe verbindingen/tunnels (loopback-IP’s)
Wanneer een client verbinding maakt via een SSH-tunnel/lokale poortdoorsturing, kan de Gateway het externe adres zien als127.0.0.1. Om te voorkomen dat dit tunneladres
als IP-adres van de client wordt opgeslagen, laat de verbindingsafhandeling ip volledig
weg voor gedetecteerde lokale clients (loopback), in plaats van het loopback-adres
in de vermelding te schrijven.
Consumenten
Pagina Devices van de Control UI
De pagina Devices combineertsystem-presence met duurzame koppelings- en
noderecords. Deze zet het eigen Gateway-baken bovenaan vast en gebruikt overeenkomende apparaat- of
instantie-id’s voor live metadata over platform, versie, model en recentheid van invoer.
Tabblad Instances van macOS
De macOS-app geeft de uitvoer vansystem-presence weer en past een kleine statusindicator
(Active/Idle/Stale) toe op basis van de ouderdom van de laatste update.
Tips voor foutopsporing
- Roep
system-presenceaan op de Gateway om de onbewerkte lijst te bekijken. - Als je dubbele vermeldingen ziet:
- controleer of clients tijdens de handshake een stabiele
client.instanceIdverzenden - controleer of periodieke bakens dezelfde
instanceIdgebruiken - controleer of
instanceIdontbreekt in de van de verbinding afgeleide vermelding (dubbele vermeldingen zijn dan te verwachten)
- controleer of clients tijdens de handshake een stabiele
Gerelateerd
Presence van actieve computer
Hoe fysieke invoer op een Mac een actieve node selecteert en verbindingswaarschuwingen routeert.
Typindicatoren
Wanneer typindicatoren worden verzonden en hoe je ze afstemt.
Streaming en segmentering
Uitgaande streaming, segmentering en opmaak per kanaal.
Gateway-architectuur
Gateway-componenten en het WebSocket-protocol dat presence-updates aanstuurt.
Gateway-protocol
Het wire-protocol voor
connect, system-event en system-presence.