我现在正在做一个新的游戏项目,它将包括一个 React 本地前端和一个基于 Lambda 的后端。该应用程序需要一些实时功能,如活动用户记录,地理围栏等。
我一直在看 Firebase 的实时数据库,它看起来是一个实时数据同步的非常优雅的解决方案,但我不认为 AWS 有任何类似的东西。
对于只使用 AWS 服务的“无服务器”实时应用,我能想到的3种选择是:
选项1: 基于 WebSocket 的 AWS 物联网消息传递
这一点很明显,通过物联网 SDK 建立一个受管理的 WebSocket 连接。我在考虑触发 Lambdas 以响应入站和出站事件,并使用 WebSocket 作为实时层,像通常那样在应用程序客户机上构建自定义处理逻辑。
这样做的缺点是,至少与 Firebase 相比,我必须自己处理事件中的数据,这将在 WebSocket 之上添加另一层管理,并且必须与应用程序存储中的 API 数据层标准化。
优点:
缺点:
选项2: 推式触发的重新取回
另一种选择是使用推送通知作为实时触发器,但是使用对 API 网关的常规 HTTP 请求来实际获取更新后的有效负载。
我喜欢这种方法,因为它只适用于一个传输层和应用程序状态的单一真实源。它也会触发更新时,应用程序没有打开,因为这些是推送通知。
缺点是,这需要进行大量的自定义工作,可能很难将推送通知映射到需要获取的数据。
优点:
缺点:
选择3: 认知同步 这对我来说是新的,我不确定它是否真的可以从服务器接口。
认知同步提供用户状态同步。跨设备完成脱机支持,是认知 SDK 的一部分,我将使用无论如何。这听起来就像我正在寻找的,但是没有找到任何确凿的证据,关于是否可以修改,或“触发”,从 AWS 的更新,而不只是从一个设备。
优点:
缺点:
我想知道是否有人有在基于 Lambda 架构的 AWS 上进行实时操作的经验,以及您是否有关于最佳进行方式的意见?