小编sko*_*oll的帖子

什么是AWS等同于Firebase实时数据库?

我正在开发一个新的游戏项目,包括一个React Native前端和一个基于Lambda的后端.该应用程序需要一些实时功能,如活动用户记录,地理围栏等.

我正在研究Firebase的实时数据库,它看起来像是一个非常优雅的实时数据同步解决方案,但我不认为AWS有任何类似的东西.

我只能使用AWS服务来考虑"无服务器"实时的3个选项是:

选项1:通过WebSockets进行AWS IoT消息传递

这一点非常明显,通过IoT SDK实现了托管WebSockets连接.我正在考虑触发Lambdas以响应入站和出站事件,并且只使用WebSockets作为实时层,就像通常那样在应用客户端上构建自定义处理逻辑.

至少与Firebase相比,这方面的缺点是我将不得不自己处理事件中的数据,这将在WebSockets之上添加另一层管理,并且必须使用应用程序商店中的API数据层进行标准化. .

优点:

  • 可扩展的双向实时连接

缺点:

  • 仅在应用程序打开时有效
  • 需要实现消息结构
  • 要管理的多个传输层

选项2:推送触发重新获取

另一种选择是使用推送通知作为实时触发器,但使用常规HTTP请求到API网关实际获取更新的有效负载.

我喜欢这种方法,因为它只适用于一个传输层和应用程序状态的单一事实来源.当应用程序未打开时,它也会触发更新,因为这些是推送通知.

缺点是这是很多自定义工作,在推送通知与需要获取的数据之间可能存在困难的映射.

优点:

  • 即使应用关闭,推送通知仍然有效
  • 单一的事实来源,传输层

缺点:

  • 最定制的解决方案
  • 将涉及更多的整体HTTP请求

选项3:Cognito Sync 这对我来说比较新,我不确定它是否可以与服务器实际连接.

Cognito Sync提供用户状态同步.跨设备完成离线支持,是我将要使用的Cognito SDK的一部分.这听起来就像我正在寻找但却无法找到任何确凿的证据,因为它可以修改或"触发"来自AWS的更新,而不仅仅是来自其中一个设备.

优点:

  • 提供抽象的实时数据模型
  • 连接到Cognito用户记录OOTB

缺点:

  • 不确定是否可以从Lambdas修改或更新


我想知道是否有人有经验在AWS上实时作为基于Lambda的架构的一部分,如果你对什么是最好的方法有意见?

real-time amazon-web-services aws-lambda firebase-realtime-database aws-iot

67
推荐指数
3
解决办法
4万
查看次数

StrictNullChecks和getElementById

在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可空的情况下编译代码?

typescript typescript2.0

21
推荐指数
1
解决办法
2142
查看次数

使用AWS API Gateway访问原始URL

是否可以使用AWS API Gateway(和Lambda)访问原始URL?

另外,是否可以访问未经解码的原始查询字符串参数?

我们正在与第三方服务集成,该第三方服务调用我们的API并对Windows-1252中的查询字符串参数进行编码。(例如,芬兰字母Ä编码为%C4而不是%C3%84)。API网关似乎会自动解码查询字符串参数并采用UTF-8,这意味着Ä(以及Ö和Å)会导致\ ufffd。

供参考:https : //www.w3schools.com/tags/ref_urlencode.asp

amazon-web-services aws-lambda aws-api-gateway

5
推荐指数
1
解决办法
347
查看次数

从Django打印时出现UnicodeEncodeError

使用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字符时崩溃.我真的不关心打印,只关心它正在做的其他事情.

python django unicode character-encoding django-views

2
推荐指数
1
解决办法
486
查看次数