Richten Sie eine $connect Route ein, für die ein WebSocket Unterprotokoll erforderlich ist - APIAmazon-Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Richten Sie eine $connect Route ein, für die ein WebSocket Unterprotokoll erforderlich ist

Clients können das Sec-WebSocket-Protocol Feld verwenden, um während der Verbindung zu Ihrem WebSocket API ein WebSocket Unterprotokoll anzufordern. Sie können eine Integration für die $connect Route einrichten, um Verbindungen nur dann zuzulassen, wenn ein Client ein von Ihnen API unterstütztes Unterprotokoll anfordert.

Die folgende Lambda-Beispielfunktion gibt den Sec-WebSocket-Protocol-Header an Clients zurück. Die Funktion stellt API nur dann eine Verbindung zu Ihrem her, wenn der Client das myprotocol Unterprotokoll spezifiziert.

Eine AWS CloudFormation Vorlage, die dieses Beispiel API und die Lambda-Proxyintegration erstellt, finden Sie unter 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; }

Sie können wscatdamit testen, ob Sie Verbindungen nur API zulassen, wenn ein Client ein von Ihnen API unterstütztes Unterprotokoll anfordert. Die folgenden Befehle verwenden das -s-Flag, um während der Verbindung Unterprotokolle anzugeben.

Mit dem folgenden Befehl wird versucht, eine Verbindung mit einem nicht unterstützten Unterprotokoll herzustellen. Da der Client das chat1-Unterprotokoll angegeben hat, gibt die Lambda-Integration einen 400-Fehler zurück und die Verbindung ist nicht erfolgreich.

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

Der folgende Befehl enthält ein unterstütztes Unterprotokoll in der Verbindungsanforderung. Die Lambda-Integration ermöglicht die Verbindung.

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

Weitere Informationen zum Aufrufen WebSocket APIs finden Sie unter. APIs aufrufen WebSocket