Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Eventi del ciclo di vita
AWS IoT può pubblicare eventi del ciclo di vita sugli argomenti MQTT. Questi eventi sono disponibili per impostazione predefinita e non possono essere disabilitati.
Nota
È possibile che i messaggi del ciclo di vita non vengano inviati in ordine. Potresti anche ricevere messaggi duplicati.
In questo argomento:
Eventi di connessione/disconnessione
Nota
Con l'indicizzazione del parco veicoli di AWS IoT Device Management, puoi cercare elementi, eseguire query aggregate e creare gruppi dinamici basati su eventi Thing Connect/Disconnect. Per ulteriori informazioni, consulta Indicizzazione del parco istanze.
AWS IoT pubblica un messaggio sui seguenti argomenti MQTT quando un client si connette o si disconnette:
-
$aws/events/presence/connected/
- Client connesso al broker di messaggi.clientId
-
$aws/events/presence/disconnected/
- Client disconnesso dal broker di messaggi.clientId
Di seguito è riportato un elenco di elementi JSON contenuti nei messaggi di connessione/disconnessione pubblicati nell'argomento $aws/events/presence/connected/
.clientId
- clientId
-
ID del client che si connette o si disconnette.
Nota
Gli ID client che contengono # o + non ricevono eventi del ciclo di vita.
- cliente InitiatedDisconnect
-
True se il client ha avviato la disconnessione. In caso contrario, false. Presente solo nei messaggi di disconnessione.
- disconnectReason
-
Il motivo per cui il client viene disconnesso. Presente solo nei messaggi di disconnessione. La tabella seguente contiene valori validi e indica se il broker invierà Messaggi Last Will and Testament (LWT) quando si verifica la disconnessione.
Motivo di disconnessione Descrizione Il broker invierà i messaggi LWT AUTH_ERROR
Il client non è riuscito a eseguire l'autenticazione oppure l'autorizzazione non è riuscita. Sì. Se il dispositivo ha una connessione attiva prima di ricevere questo errore. CLIENT_INITIATED_DISCONNECT
Il client indica che si disconnette. Il client può farlo inviando un pacchetto di DISCONNECT
controllo MQTT o unClose frame
se il client utilizza una WebSocket connessione.No. CLIENT_ERROR
Il client ha rilevato un errore che causa la disconnessione. Ad esempio, il client viene disconnesso per l'invio di più di 1 pacchetto CONNECT
MQTT sulla stessa connessione o se tenta di pubblicare con un payload che supera il limite del payload.Sì. CONNECTION_LOST
La connessione client-server viene interrotta. Ciò può verificarsi durante un periodo di alta latenza di rete o quando la connessione Internet viene persa. Sì. DUPLICATE_CLIENTID
Il client utilizza un ID client già in uso. In questo caso, il client già connesso verrà disconnesso con questo motivo di disconnessione. Sì. FORBIDDEN_ACCESS
Il client non è autorizzato alla connessione. Ad esempio, un client con un indirizzo IP negato non riesce a connettersi. Sì. Se il dispositivo ha una connessione attiva prima di ricevere questo errore. MQTT_KEEP_ALIVE_TIMEOUT
Se non viene rilevata alcuna comunicazione client-server per 1,5x del tempo keep-alive del client, il client viene disconnesso. Sì. SERVER_ERROR
Disconnesso a causa di problemi imprevisti del server. Sì. SERVER_INITIATED_DISCONNECT
Il server disconnette intenzionalmente un client per motivi operativi. Sì. THROTTLED
Il client viene disconnesso per il superamento di un limite di throttling. Sì. WEBSOCKET_TTL_EXPIRATION
Il client è disconnesso perché a è WebSocket stato connesso più a lungo del suo valore. time-to-live Sì. CUSTOMAUTH_TTL_EXPIRATION
Il client è disconnesso perché è stato connesso più a lungo del time-to-live valore del relativo autorizzatore personalizzato. Sì. - eventType
-
Tipo di evento. I valori validi sono
connected
edisconnected
. - ipAddress
-
L'indirizzo IP del client di connessione. Questo può essere in formato IPv4 o IPv6. Presente solo nei messaggi di connessione.
- principalIdentifier
-
Credenziale usata per l'autenticazione. Per i certificati di autenticazione reciproca TLS, si tratta dell'ID certificato. Per altre connessioni, si tratta delle credenziali IAM.
- sessionIdentifier
-
Un identificatore univoco globale AWS IoT che esiste per tutta la durata della sessione.
- timestamp
-
Un'approssimazione del momento in cui si è verificato l'evento.
- versionNumber
-
Numero di versione per l'evento del ciclo di vita. Consiste nell'aumentare in maniera monotona un valore intero lungo per ogni connessione dell'ID client. Il numero di versione può essere utilizzato da un sottoscrittore per dedurre l'ordine degli eventi del ciclo di vita.
Nota
I messaggi di connessione e disconnessione per una connessione client hanno lo stesso numero di versione.
Il numero di versione potrebbe ignorare valori e non è garantito che aumenti di 1 in modo costante per ogni evento.
Se un client non è connesso per circa un'ora, il numero di versione viene reimpostato su 0. Per le sessioni persistenti, il numero di versione viene reimpostato su 0 dopo che un client è stato disconnesso più a lungo del periodo configurato time-to-live (TTL) per la sessione persistente.
Un messaggio di connessione ha la seguente struttura.
{ "clientId": "186b5", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "a4666d2a7d844ae4ac5d7b38c9cb7967", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }
Un messaggio di disconnessione ha la seguente struttura.
{ "clientId": "186b5", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "a4666d2a7d844ae4ac5d7b38c9cb7967", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }
Gestione delle disconnessioni client
Secondo le best practice, occorre sempre avere uno stato di attesa implementato per gli eventi del ciclo di vita, inclusi i messaggi Last Will and Testament (LWT). Quando si riceve un messaggio di disconnessione, il codice deve attendere un periodo di tempo e verificare che un dispositivo è ancora offline prima di effettuare operazioni. A questo scopo, è possibile utilizzare Code di ritardo Amazon SQS. Quando un client riceve un LWT o un evento del ciclo di vita, è possibile accodare un messaggio, ad esempio per 5 secondi. Quando il messaggio diventa disponibile e viene elaborato (da Lambda o da un altro servizio), è possibile controllare innanzitutto se il dispositivo è ancora realmente offline prima di effettuare ulteriori operazioni.
Eventi di sottoscrizione/annullamento della sottoscrizione
AWS IoT pubblica un messaggio sul seguente argomento MQTT quando un client sottoscrive o annulla l'iscrizione a un argomento MQTT:
$aws/events/subscriptions/subscribed/
clientId
oppure
$aws/events/subscriptions/unsubscribed/
clientId
Dove clientId
è l'ID client MQTT che si connette al broker di messaggi AWS IoT
.
Il messaggio pubblicato in questo argomento ha la struttura seguente:
{ "clientId": "186b5", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "000000000000/ABCDEFGHIJKLMNOPQRSTU:some-user/ABCDEFGHIJKLMNOPQRSTU:some-user", "topics" : ["foo/bar","device/data","dog/cat"] }
Di seguito è riportato un elenco di elementi JSON contenuti nei messaggi di cui è stata eseguita o annullata la sottoscrizione pubblicati negli argomenti $aws/events/subscriptions/subscribed/
e clientId
$aws/events/subscriptions/unsubscribed/
.clientId
- clientId
-
ID del client che esegue la sottoscrizione o l'annullamento della sottoscrizione.
Nota
Gli ID client che contengono # o + non ricevono eventi del ciclo di vita.
- eventType
-
Tipo di evento. I valori validi sono
subscribed
eunsubscribed
. - principalIdentifier
-
Credenziale usata per l'autenticazione. Per i certificati di autenticazione reciproca TLS, si tratta dell'ID certificato. Per altre connessioni, si tratta delle credenziali IAM.
- sessionIdentifier
-
Un identificatore univoco globale AWS IoT che esiste per tutta la durata della sessione.
- timestamp
-
Un'approssimazione del momento in cui si è verificato l'evento.
- topics
-
Matrice degli argomenti MQTT sottoscritti dal client.
Nota
È possibile che i messaggi del ciclo di vita non vengano inviati in ordine. Potresti anche ricevere messaggi duplicati.