我正在开发一个新的游戏项目,包括一个React Native前端和一个基于Lambda的后端.该应用程序需要一些实时功能,如活动用户记录,地理围栏等.
我正在研究Firebase的实时数据库,它看起来像是一个非常优雅的实时数据同步解决方案,但我不认为AWS有任何类似的东西.
我只能使用AWS服务来考虑"无服务器"实时的3个选项是:
选项1:通过WebSockets进行AWS IoT消息传递
这一点非常明显,通过IoT SDK实现了托管WebSockets连接.我正在考虑触发Lambdas以响应入站和出站事件,并且只使用WebSockets作为实时层,就像通常那样在应用客户端上构建自定义处理逻辑.
至少与Firebase相比,这方面的缺点是我将不得不自己处理事件中的数据,这将在WebSockets之上添加另一层管理,并且必须使用应用程序商店中的API数据层进行标准化. .
优点:
缺点:
选项2:推送触发重新获取
另一种选择是使用推送通知作为实时触发器,但使用常规HTTP请求到API网关实际获取更新的有效负载.
我喜欢这种方法,因为它只适用于一个传输层和应用程序状态的单一事实来源.当应用程序未打开时,它也会触发更新,因为这些是推送通知.
缺点是这是很多自定义工作,在推送通知与需要获取的数据之间可能存在困难的映射.
优点:
缺点:
选项3:Cognito Sync 这对我来说比较新,我不确定它是否可以与服务器实际连接.
Cognito Sync提供用户状态同步.跨设备完成离线支持,是我将要使用的Cognito SDK的一部分.这听起来就像我正在寻找但却无法找到任何确凿的证据,因为它可以修改或"触发"来自AWS的更新,而不仅仅是来自其中一个设备.
优点:
缺点:
我想知道是否有人有经验在AWS上实时作为基于Lambda的架构的一部分,如果你对什么是最好的方法有意见?
real-time amazon-web-services aws-lambda firebase-realtime-database aws-iot
在TypeScript 2.0中启用了StrictNullChecks,代码
var el: HTMLElement = document.getElementById('element_id');
Run Code Online (Sandbox Code Playgroud)
产生错误
Type 'HTMLElement | null' is not assignable to type 'HTMLElement'.
Type 'null' is not assignable to type 'HTMLElement'.
Run Code Online (Sandbox Code Playgroud)
为什么这样,如何在不设置el可空的情况下编译代码?
是否可以使用AWS API Gateway(和Lambda)访问原始URL?
另外,是否可以访问未经解码的原始查询字符串参数?
我们正在与第三方服务集成,该第三方服务调用我们的API并对Windows-1252中的查询字符串参数进行编码。(例如,芬兰字母Ä编码为%C4而不是%C3%84)。API网关似乎会自动解码查询字符串参数并采用UTF-8,这意味着Ä(以及Ö和Å)会导致\ ufffd。
使用python解释器
>>> print u'\xe9'
é
Run Code Online (Sandbox Code Playgroud)
但是,如果我在Django视图中放入相同的行,我会得到
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0:
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我正在使用Django 1.5.1和python 2.6.6.
一些背景......我有一个Django项目,它使用第三方模块处理一些字符串,并打印它们.当在Django之外使用模块时,它工作正常,但是当它作为Django项目的一部分使用时,它在尝试打印非ascii字符时崩溃.我真的不关心打印,只关心它正在做的其他事情.
aws-lambda ×2
aws-iot ×1
django ×1
django-views ×1
python ×1
real-time ×1
typescript ×1
unicode ×1