【问题标题】:JS Frontend <-> C++ backend communication (different servers)JS 前端 <-> C++ 后端通信(不同的服务器)
【发布时间】:2013-11-23 19:39:15
【问题描述】:

我正在开发一个由 Web 前端和后台服务组成的项目。 Web 前端可供用户访问,并且应该与后台服务进行通信,后台服务是用 C++ 编写的,并在不同的机器上运行(将来可能会有多个)。

仅供参考: 后台服务器(以后称为“后端”)就像一个 http 服务器,监听特定端口上的传入请求。

到目前为止,前端通过简单的 http 请求向后端发送命令,其中包含 xml 或 json 格式的数据。

好吧,现在这是我的问题: 由于用户在前端输入数据,因此前端期望后端的一些数据显示给用户或在我们的数据库内部使用。

您能推荐一些方法来处理从后端发送到前端的数据吗?

我目前的想法: 后端在启动时获得一个链接,有点像 pingback url,如果有任何数据要返回到前端,它可以调用它。被调用的文件将传入的数据输入到某个地方进行存储,例如memcache 或 mem-only 数据库。 我打算用 javascript 编写前端,可能使用 Ember.js 或 Angular.js 之类的框架,它们可以在内部自动处理此类数据更新。无论哪种方式,它都应该使用尽可能少的资源尽可能实时地更新前端。

我目前的方法有效还是纯粹是愚蠢的?

一般来说: 你能给我提示如何改进上述方案或建议任何其他方法来实现这一点吗?

我已经用谷歌搜索了这个,但我找到的只是Designing Javascript frontend <-> C++ backend communication,但他只是希望他的后端在同一台机器上,我有不同的。

编辑: 我忘记了最重要的细节(或者我在想):目前只有一个后端实例可以处理很多客户端。前端的每个用户至少有一个与客户端管理器(后端)关联的客户端。所以可能会有很多数据从管理器返回。

这里真正的问题(或者至少我认为这是最大的)是我应该如何将返回的数据分发给每个客户端。

莲花

【问题讨论】:

  • 我想出了另一种方法:由于管理服务器的地址必须保密,因此不可能让客户端通过 Node.js 之类的东西直接连接到它。但是,如果我在两者之间安装类似代理的东西,我可以按照这种方法并这样做。但是将http服务器更改为“普通”tcp服务器需要做很多工作我想要一些关于这个新解决方案的提示。有吗?

标签: javascript c++ angularjs ember.js


【解决方案1】:

有两种很好的方法可以处理从后端向前端发送数据。

  1. 客户端每隔一段时间轮询后端,这是一种非常常见的做法,但如果您要进行一百万次回调,则效率极低

  2. 使用 websockets,http://en.wikipedia.org/wiki/WebSocket

【讨论】:

  • 由于我只使用一个管理器来处理很多客户,我最大的问题是如何将返回的数据分发给他们所属的每个客户。我不知道您的任何建议是否可以做到这一点?
  • 我不确定我是否完全理解经理是什么。如果我错了,请纠正我,我正在尝试将这一切可视化,Chrome 中的 Joe Blow(用户)有 1 个以上的客户端与他的用户相关联。每个客户端都有自己的网络服务器?
  • Bob 有一个帐户,登录到前端。他创造了一个新的“工作”。前端连接到后端,后端创建一个新的子进程。 哎呀发送太快了。然后,经理想要将数据发回给用户。管理器中只有一个网络服务器启动新客户端并处理数据。
【解决方案2】:

我不太熟悉 C++ 作为后端 Web 服务,但如果您正在侦听端口并处理 url(通过某种类型的控制器?),那么 ajax 将是最好的解决方案,您可以设置一个 url 来发布数据来自前端并从您的服务返回数据。我注意到你添加了 angular.js 和 ember.js 作为标签。

如果您使用它们,它们都有很好的 ajax 框架,不确定 ember 但 angular.js 使用“资源”,值得 Google 搜索。

希望我正确理解了您的要求。

此外,如果您使用 Angular 并且想要实时感觉,您应该查看模型和数据绑定以及 $watch 方法。您可以在前端的输入更改后立即发送 ajax 调用,但是,您需要添加某种超时,这样您就不会不断地向后端发送请求。

【讨论】:

  • 非常有趣,知道这一点绝对好!尽管仍然存在一个问题:如何将数据从后端(一次为多个客户端返回数据)传递到不同的前端实例?抱歉有点含糊和/或不清楚,但很难将这样的事情描述为非母语人士^^
  • 没问题,所以如果我理解正确,您希望它跨多个前端实例实时更新吗?如果是这样,您需要像 web sockets 这样的东西,这就是您应该开始研究的东西,我会提供一些资源但是,我不知道 C++ 是如何处理的
  • 嗯,我认为它更像这样:多个前端仅连接到一个后端,那么我如何将数据从后端传递到每个前端?它很难描述:/
猜你喜欢
  • 2020-01-08
  • 1970-01-01
  • 2020-12-12
  • 2011-09-12
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多