2

语境

应用:单页实时网页应用

功能:

  • 用户在应用程序上操作小部件,小部件数据发送到服务器
  • 服务器使用工作线程计算并将数据发送回应用程序

沟通:

  • 类型:目前只有app <--> server。
  • 将来需要发布/订阅
  • 大小:无论哪种方式,每次更新 JSON 数 kB
  • 频率:每分钟 1-10 次更新

峰值负载:数百个并发用户(当然)

开发者能力:麻瓜


方法

1)朴素的做法:托管node.js + express + socket.io

我有一个沙盒,可以用天真的方法运行,但我觉得像 Toonces The Driving Cat(我告诉过你他会开车!只是不太好!)。我为 csp、xframe、xss 等戴上了头盔,但我的 socket.io 代码非常基本,没有特殊的事件处理程序或流量限制。

2) 替代方法:托管 node.js + 托管实时数据/消息服务

这里的期望是托管的实时数据/消息传递服务是强大的,并且可以扩展到流量,除了处理 DoS 和安全传输等问题。托管的 node.js 应用程序将在 CDN 后面提供静态文件,因此主要处理实时数据和工作线程。node.js 应用程序不会直接面向 Web 应用程序用户。


问题

您是否会推荐方法#2,因为它明显优越且值得额外费用?

欢迎任何其他评论/建议。

4

1 回答 1

2

在这里聚会有点晚了,但我认为这对其他人也可能有所帮助。从本质上讲,您必须评估您管理支持实时 Web 应用程序的堆栈的能力,即您是否能够配置所有组件 - socket.io、express、node 并保持它们运行?

通过使用稍微简化一些事情的框架,您可以让您的生活更轻松。Meteor ( https://www.meteor.com/ ) 是一个很好的例子,它可以让你更多地关注代码。您仍然需要一些部署 Meteor 的知识,但这需要一些工作量。

在极端情况下,您可以选择一个完全托管的框架,例如 Sync Ninja ( http://www.syncninja.com/ ),它只允许您处理您的代码。

根据经验,刚开始时使用托管解决方案是值得的,因为您可以专注于构建应用程序而不是管理后端。

免责声明:我曾在 Sync Ninja 上工作。

于 2015-04-19T07:07:48.300 回答