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à.
Gestisci gli utenti connessi e le app client: $connect
e $disconnect
i percorsi
La sezione seguente descrive come utilizzare i $disconnect
percorsi $connect
e per WebSocket API.
Argomenti
Instradamento $connect
Le app client si connettono al tuo WebSocket API inviando una richiesta di WebSocket aggiornamento. Se la richiesta ha esito positivo, la route $connect
viene eseguita mentre la connessione viene stabilita.
Poiché la WebSocket connessione è una connessione con stato, puoi configurare l'autorizzazione solo sulla $connect
route. AuthN
/AuthZ
verrà eseguito solo al momento della connessione.
Finché l'esecuzione dell'integrazione associata alla route $connect
non viene completata, la richiesta di aggiornamento è in sospeso e la connessione effettiva non verrà stabilita. Se la richiesta $connect
ha esito negativo (ad esempio, a causa di un errore AuthN
/AuthZ
o errore di integrazione), la connessione non verrà stabilita.
Nota
Se l'autorizzazione ha esito negativo su $connect
, la connessione non verrà stabilita e il client riceverà una risposta 401
o 403
.
La configurazione di un'integrazione per $connect
è facoltativa. È opportuno valutare la configurazione di un'integrazione $connect
se:
-
Si desidera consentire ai client di specificare sottoprotocolli utilizzando il campo
Sec-WebSocket-Protocol
. Per il codice di esempio, consulta Configura una $connect route che richiede un WebSocket sottoprotocollo. -
Desideri ricevere una notifica in caso di connessione dei client.
-
Desideri limitare le connessioni o controllare chi si connette.
-
Vuoi che il tuo backend invii messaggi ai clienti utilizzando un callbackURL.
-
Desideri archiviare ogni ID connessione e altre informazioni in un database (ad esempio Amazon DynamoDB).
Passaggio delle informazioni di connessione dalla route $connect
È possibile utilizzare integrazioni proxy e non proxy per passare informazioni dall'instradamento $connect
a un database o a un altro Servizio AWS.
Per passare le informazioni di connessione utilizzando un'integrazione proxy
È possibile accedere alle informazioni di connessione da un'integrazione proxy Lambda nell'evento. Usa un'altra AWS Lambda funzione Servizio AWS o per postare sulla connessione.
La seguente funzione Lambda mostra come utilizzare l'oggetto requestContext
per registrare l'ID di connessione, il nome di dominio, il nome della fase e le stringhe di query.
Per passare informazioni di connessione utilizzando un'integrazione proxy
-
È possibile accedere alle informazioni di connessione da un'integrazione non proxy. Imposta la richiesta di integrazione e fornisci un modello di WebSocket API richiesta. Il seguente modello di mappatura Velocity Template Language (VTL)
fornisce una richiesta di integrazione. Questa richiesta invia i seguenti dettagli a un'integrazione non proxy: -
ID connessione
-
Nome dominio
-
Nome fase
-
Path
-
Headers
-
Stringhe di query
Questa richiesta invia l'ID di connessione, il nome di dominio, il nome della fase i percorsi, le intestazioni e le stringhe di query a un'integrazione non proxy.
{ "connectionId": "$context.connectionId", "domain": "$context.domainName", "stage": "$context.stage", "params": "$input.params()" }
Per ulteriori informazioni sulla configurazione delle trasformazioni di dati, consulta Trasformazioni dei dati per le API in WebSocket API Gateway.
Per completare la richiesta di integrazione, impostare
StatusCode: 200
per la risposta di integrazione. Per ulteriori informazioni sulla configurazione di una risposta di integrazione, consulta Imposta una risposta di integrazione utilizzando la console API Gateway. -
Instradamento $disconnect
La route $disconnect
viene eseguita dopo la chiusura della connessione.
La connessione può essere chiusa dal server o dal client. Poiché la connessione è già chiusa quando viene eseguita, $disconnect
è un evento best-effort. APIGateway farà del suo meglio per fornire l'$disconnect
evento necessario all'integrazione, ma non può garantire la consegna.
Il backend può avviare la disconnessione utilizzando. @connections
API Per ulteriori informazioni, consulta Utilizzo di comandi @connections nel servizio di back-end.