Configura una $connect route che richiede un WebSocket sottoprotocollo - 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à.

Configura una $connect route che richiede un WebSocket sottoprotocollo

I client possono utilizzare il Sec-WebSocket-Protocol campo per richiedere un WebSocket sottoprotocollo durante la connessione al tuo WebSocket API. Puoi configurare un'integrazione per il $connect percorso per consentire le connessioni solo se un client richiede un sottoprotocollo supportato dal tuoAPI.

La funzione Lambda di esempio seguente restituisce l'intestazione Sec-WebSocket-Protocol ai client. La funzione stabilisce una connessione con l'utente API solo se il client specifica il sottoprotocollo. myprotocol

Per un AWS CloudFormation modello che crea questo esempio API e l'integrazione del proxy Lambda, vedi. ws-subprotocol.yaml

export const handler = async (event) => { if (event.headers != undefined) { const headers = toLowerCaseProperties(event.headers); if (headers['sec-websocket-protocol'] != undefined) { const subprotocolHeader = headers['sec-websocket-protocol']; const subprotocols = subprotocolHeader.split(','); if (subprotocols.indexOf('myprotocol') >= 0) { const response = { statusCode: 200, headers: { "Sec-WebSocket-Protocol" : "myprotocol" } }; return response; } } } const response = { statusCode: 400 }; return response; }; function toLowerCaseProperties(obj) { var wrapper = {}; for (var key in obj) { wrapper[key.toLowerCase()] = obj[key]; } return wrapper; }

Puoi utilizzarlo wscatper verificare che API consenta le connessioni solo se un client richiede un sottoprotocollo supportato da teAPI. I comandi seguenti utilizzano il flag -s per specificare i sottoprotocolli durante la connessione.

Il comando seguente tenta una connessione con un sottoprotocollo non supportato. Poiché il client ha specificato il sottoprotocollo chat1, l'integrazione Lambda restituisce un errore 400 e la connessione non riesce.

wscat -c wss://api-id.execute-api.region.amazonaws.com/beta -s chat1 error: Unexpected server response: 400

Il comando seguente include un sottoprotocollo supportato nella richiesta di connessione. L'integrazione Lambda consente la connessione.

wscat -c wss://api-id.execute-api.region.amazonaws.com/beta -s chat1,myprotocol connected (press CTRL+C to quit)

Per ulteriori informazioni sull'invocazione WebSocket APIs, consulta. Richiama le API WebSocket