使用 AWS API 网关处理 WebSocket 重新连接以及 Codename One 中的协议持久性

问题描述 投票:0回答:1

代号同一个社区,

我目前正在开发一个项目,该项目涉及将 Codename One WebSocket 类与 AWS API Gateway 结合使用。 AWS API Gateway 允许将 Sec-WebSocket-Protocol 字段作为 $connect 路由响应的一部分发回,使客户端能够在连接到 WebSocket API 时请求特定的子协议。

我在 Codename One WebSocket 类的重新连接(自动重新连接)功能方面遇到了挑战。具体来说,当通过 WebSocket 类设置协议时,该协议信息在重新连接时会丢失。这对于我的用例至关重要,因为我通过协议发送授权和用户信息,这些信息随后在重新连接期间丢失。

为了解决这个问题,我创建了自己版本的 WebSocket 类,添加了一个私有 String 变量来存储协议,并修改了重新连接函数以在重新连接过程中将协议设置回来。该解决方案适用于连接、重新连接和断开连接。但是,OnOpen、OnMessage、OnClose 和 OnError 方法无法按预期工作。我怀疑这是由于本机功能无法处理此外部修改。

作为一种解决方法,我停止使用 Codename One WebSocket 类的重新连接功能,而是在 OnClose 方法中手动触发新 WebSocket 对象的创建,从而有效地创建了递归重新连接机制。这个方法看起来效果不错。

我向 Codename One 团队和社区提出的问题是:

您对我的方法有何看法?您是否发现任何潜在问题或有改进建议?

是否有计划增强 Codename One WebSocket 类以更好地处理重新连接过程中的协议持久性?此外,是否有可能在未来的更新中出于安全目的添加标头信息? 任何有关此事的见解或建议将不胜感激。

感谢您的时间和帮助。

奥斯卡·纳兰霍

amazon-web-services aws-api-gateway codenameone
1个回答
0
投票

重新连接代码相对简单,并且在 Java 空间中实现,您可以参见此处。如果没有您的代码,很难说清楚,但如果我理解正确,最好分叉该项目,添加增强功能以包含您需要的元数据并提交拉取请求。

首先在项目上提出问题可能是有意义的,这样您就可以讨论解决该特定问题的通用方法。

© www.soinside.com 2019 - 2024. All rights reserved.