如何更改 AWS API 网关中的 websocket 连接 ID?

How can I change websocket connection IDs in AWS API Gateway?

我很好奇 AWS Websocket ApiGateway 如何生成 connectionIDs 以及是否可以自定义它们的生成方式?

$context.connectionId = A unique ID for the connection that can be used to make a callback to the client.

例如,我希望每次连接时连接 ID 始终具有相同的值(我的数据库中的用户 ID)。

如果用户 ID = 1,则连接 ID 也应 = 1,客户端应用程序负责强制执行唯一性。

不,无法修改自动生成的连接 ID。


当 WebSocket 客户端请求新连接时,API 网关会分配一个自动生成的连接 ID,例如AjKdsJDkDJfgmDJ= 到该会话并使用事件负载中的 ID 调用您的 $connect Lambda 函数 (event.requestContext.connectionId)。

你无法回答连接 ID 是如何生成的? 因为它不是 GUID 也不是数字,但它绝对是一个随机的 something.

生成

您可以使用此连接 ID 在同一函数调用中将消息直接发送回客户端。

如果您还希望稍后能够发送消息,请将连接 ID 存储在数据存储中 - 例如 DynamoDB - 以及到您的用户 ID 的映射。

这样,您可以通过用户 ID 查找您的 table,然后获取与他们交互的连接 ID,反之亦然。