实时网络应用程序:socket.io或托管数据/消息?

时间:2014-01-18 06:06:16

标签: node.js socket.io real-time-data

CONTEXT

应用:单页实时网络应用

功能性:

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

通讯:

  • 类型:目前只有app< - >服务器
  • 将来需要pub / sub
  • 大小: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显然优越并且值得花费额外费用?

欢迎任何其他意见/建议。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

免责声明:我参与过Sync Ninja。