- il Gateway stesso e
- i client visibili all’utente connessi al Gateway (app per Mac, WebChat, nodi ecc.)
Campi della presenza (cosa viene visualizzato)
Le voci di presenza sono oggetti strutturati con campi quali:instanceId(facoltativo ma fortemente consigliato): identità stabile del client (solitamenteconnect.client.instanceId)host: nome host facilmente comprensibileip: indirizzo IP determinato in base al massimo impegnoversion: stringa della versione del clientdeviceFamily/modelIdentifier: indicazioni sull’hardwaremode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: secondi trascorsi dall’ultimo input dell’utente, se notoreason: stringa in formato libero fornita dal client; il Gateway stesso emette soloself,connectedisconnectdeviceId,roles,scopes: identità del dispositivo e indicazioni sul ruolo/ambito provenienti dall’handshake di connessionets: timestamp dell’ultimo aggiornamento (ms dall’epoca)
Produttori (origine della presenza)
Le voci di presenza sono prodotte da più fonti e vengono unite.1) Voce del Gateway stesso
All’avvio, il Gateway inserisce sempre una voce relativa a sé stesso affinché le interfacce mostrino l’host del Gateway anche prima della connessione di qualsiasi client.2) Connessione WebSocket
Ogni client WS inizia con una richiestaconnect. Quando l’handshake riesce, il
Gateway inserisce o aggiorna una voce di presenza per quella connessione.
Perché le connessioni effimere del piano di controllo non vengono visualizzate
I comandi CLI, i client RPC di backend e le sonde spesso si connettono brevemente. Per evitare di conservare queste frequenti variazioni per l’intero TTL della presenza, i client in modalitàcli, backend
o probe non vengono trasformati in voci di presenza. I client in modalità di test
continuano a essere monitorati perché le suite di test li usano come sostituti dei client reali.
3) Beacon system-event
I client possono inviare beacon periodici più dettagliati tramite il metodo system-event. L’app per Mac
lo usa per segnalare il nome host, l’IP e lastInputSeconds.
4) Connessioni dei nodi (ruolo: nodo)
Quando un nodo si connette tramite il WebSocket del Gateway conrole: node, il Gateway
inserisce o aggiorna una voce di presenza per quel nodo (seguendo lo stesso flusso degli altri client WS).
Regole di unione e deduplicazione (perché instanceId è importante)
Le voci di presenza vengono archiviate in un’unica mappa in memoria, le cui chiavi non distinguono tra maiuscole e minuscole
e corrispondono al primo valore disponibile tra i seguenti, nell’ordine: l’ID di un dispositivo associato, connect.client.instanceId
o, come ultima risorsa, l’ID specifico della connessione.
I client effimeri del piano di controllo sono completamente esclusi dal monitoraggio (vedere
sopra), pertanto i relativi ID di connessione non diventano mai chiavi. Per tutti gli altri client, il
ripiego sull’ID di connessione implica che un client che si riconnette senza un
instanceId stabile venga visualizzato come riga duplicata.
TTL e dimensione limitata
La presenza è intenzionalmente effimera:- TTL: le voci più vecchie di 5 minuti vengono eliminate
- Numero massimo di voci: 200 (le più vecchie vengono eliminate per prime)
Avvertenza su connessioni remote/tunnel (IP di loopback)
Quando un client si connette tramite un tunnel SSH o un inoltro di porta locale, il Gateway può rilevare l’indirizzo remoto come127.0.0.1. Per evitare di registrare l’indirizzo del tunnel
come IP del client, la gestione della connessione omette completamente ip per
i client rilevati come locali (loopback), anziché scrivere l’indirizzo di loopback
nella voce.
Utilizzatori
Pagina Dispositivi dell’interfaccia di controllo
La pagina Dispositivi combinasystem-presence con i record persistenti di associazione e dei
nodi. Fissa per primo il beacon del Gateway stesso e usa gli ID corrispondenti del dispositivo o
dell’istanza per i metadati in tempo reale relativi a piattaforma, versione, modello e tempo trascorso dall’ultimo input.
Scheda Istanze di macOS
L’app macOS visualizza l’output disystem-presence e applica un piccolo indicatore
di stato (Attivo/Inattivo/Obsoleto) in base al tempo trascorso dall’ultimo aggiornamento.
Suggerimenti per il debug
- Per visualizzare l’elenco non elaborato, chiamare
system-presencesul Gateway. - Se vengono visualizzati duplicati:
- verificare che i client inviino un
client.instanceIdstabile durante l’handshake - verificare che i beacon periodici usino lo stesso
instanceId - controllare se nella voce derivata dalla connessione manca
instanceId(i duplicati sono previsti)
- verificare che i client inviino un
Contenuti correlati
Presenza del computer attivo
In che modo l’input fisico del Mac seleziona un nodo attivo e instrada gli avvisi di connessione.
Indicatori di digitazione
Quando vengono inviati gli indicatori di digitazione e come regolarli.
Streaming e suddivisione in blocchi
Streaming in uscita, suddivisione in blocchi e formattazione specifica per canale.
Architettura del Gateway
I componenti del Gateway e il protocollo WebSocket che gestisce gli aggiornamenti della presenza.
Protocollo del Gateway
Il protocollo di comunicazione per
connect, system-event e system-presence.