Panoramica delle API WebSocket in Gateway API - Amazon API Gateway

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 $connect quando viene avviata una connessione permanente tra il client e un'API WebSocket.

  • API Gateway chiama la route $disconnect quando 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 $default se 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 @connections per 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.