You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS WebSocket API的$disconnect路由执行时注册发送自定义信息

AWS WebSocket API客户端断开时传递自定义信息解决方案

首先明确结论:原生不支持在客户端触发断开连接时直接注册自定义信息随$disconnect事件投递,原因是$disconnect是API Gateway检测到连接已断开后才生成的后端事件,此时客户端与API Gateway的连接已经关闭,没有通道传递客户端侧的自定义数据。

你可以通过以下两种成熟方案实现你的需求,避免$disconnect处理逻辑中查询数据库:

  • 方案1:在连接建立阶段注入自定义上下文
    客户端发起WebSocket连接请求时,你可以通过两种方式将用户/设备标识固化到连接上下文,后续该连接对应的所有事件(包括$disconnect)都会自动携带这些参数:
    1. 配置自定义授权器:客户端连接时携带身份凭证,授权器验证身份后将userId、deviceId等参数写入授权上下文,所有后续事件的requestContext.authorizer字段会直接包含这些参数
    2. 在$connect路由的集成响应中写入自定义上下文:$connect处理Lambda验证身份后,在返回给API Gateway的响应中添加自定义上下文参数,这些参数同样会被附加到该连接的所有后续事件中
  • 方案2:客户端主动上报断开事件
    如果你的业务允许调整断开流程,可以让客户端在主动调用close()断开原生连接之前,先向后端发送一个自定义路由的断开通知消息,携带所有需要的自定义信息,后端完成清理逻辑后再主动调用DeleteConnection接口断开连接。该方案可以100%拿到自定义数据,仅需要额外添加客户端意外掉线的兜底清理逻辑即可。

注意:以上方案均不影响$disconnect本身的尽力交付特性,只要$disconnect事件成功投递到你的Lambda,就可以直接从事件参数中拿到预存的用户/设备标识,无需额外的数据库查询。如果你的业务对断开感知的可靠性要求极高,建议额外搭配定时任务定期清理超时的无效连接作为兜底。

内容的提问来源于stack exchange,提问作者radrt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:15:03