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à.
Panoramica delle API WebSocket in Gateway API
In API Gateway puoi creare un'API WebSocket come un front-end stateful per un servizio AWS (ad esempio Lambda o Dynamo DB) o per un endpoint HTTP. L'API WebSocket richiama il back-end in base al contenuto dei messaggi che riceve dalle app client.
A differenza di un'API REST, che riceve e risponde alle richieste, un'API WebSocket supporta la comunicazione bidirezionale tra le app client e il back-end. Il back-end può inviare messaggi di callback a client connessi.
Nell'API WebSocket, i messaggi JSON in entrata sono indirizzati a integrazioni di back-end basate sulle route configurate dall'utente. (Messaggi non JSON sono indirizzati a una route $default configurata dall'utente).
Una route include una chiave di route, che è il valore previsto dopo che un'espressione di selezione della route è stata valutata. routeSelectionExpression è un attributo definito a livello di API. Specifica una proprietà JSON che deve essere presente nel payload del messaggio. Per ulteriori informazioni sulle espressioni di selezione della route, consulta Espressioni di selezione dell'instradamento.
Ad esempio, se i messaggi JSON contengono una proprietà action e desideri eseguire operazioni diverse in base a questa proprietà, l'espressione di selezione della route potrebbe essere ${request.body.action}. La tabella di routing specifica quale operazione eseguire abbinando il valore della proprietà action ai valori delle chiavi route personalizzate definiti nella tabella.
Utilizzo degli instradamenti per un'API WebSocket
Esistono tre route predefinite che possono essere utilizzate: $connect, $disconnect e $default. Inoltre, puoi creare route personalizzate.
-
API Gateway chiama la route
$connectquando viene avviata una connessione permanente tra il client e un'API WebSocket. -
API Gateway chiama la route
$disconnectquando il client o il server si scollega dall'API. -
API Gateway chiama una route personalizzata dopo che l'espressione di selezione della route viene valutata rispetto al messaggio, se viene trovata una route corrispondente; la corrispondenza determina quale integrazione viene richiamata.
-
API Gateway chiama la route
$defaultse l'espressione di selezione della route non può essere valutata rispetto al messaggio o se non viene trovata una route corrispondente.
Per ulteriori informazioni sulle route $connect e $disconnect, consulta Gestione di utenti connessi e app client: instradamenti $connect e $disconnect.
Per ulteriori informazioni sulla route $default e le route personalizzate, consulta Invocazione dell'integrazione backend con l'instradamento $default e gli instradamenti personalizzati in Gateway API.
Invio dei dati alle app client connesse
I servizi di back-end possono inviare dati alle app client connesse. È possibile inviare i dati nel modo seguente:
-
Utilizza un'integrazione per inviare una risposta, che viene restituita al client da una risposta di instradamento definita.
-
Puoi utilizzare l'API
@connectionsper inviare una richiesta POST. Per ulteriori informazioni, consulta Utilizzo di comandi @connections nel servizio di back-end.
Codici di stato delle API WebSocket
Le API WebSocket Gateway API utilizzano i seguenti codici di stato per la comunicazione dal server al client, come descritto in WebSocket Close Code Number Registry
- 1001
-
Gateway API restituisce questo codice di stato quando il client è inattivo per 10 minuti o raggiunge la durata massima della connessione di 2 ore.
- 1003
-
Gateway API restituisce questo codice di stato quando un endpoint riceve un tipo di supporto binario. I tipi di supporto binari non sono supportati per le API WebSocket.
- 1005
Gateway API restituisce questo codice di stato se il client invia un frame chiuso senza codice di chiusura.
- 1006
Gateway API restituisce questo codice di stato in caso di chiusura imprevista della connessione, ad esempio la connessione TCP chiusa senza un frame di chiusura WebSocket.
- 1008
-
Gateway API restituisce questo codice di stato quando un endpoint riceve troppe richieste da un determinato client.
- 1009
-
Gateway API restituisce questo codice di stato quando un endpoint riceve un messaggio troppo grande per essere elaborato.
- 1011
Gateway API restituisce questo codice di stato in caso di errore interno del server.
- 1012
-
Gateway API restituisce questo codice di stato se il servizio si riavvia.