【问题标题】:Communicating between C++ and Remote JavascriptC++ 和远程 Javascript 之间的通信
【发布时间】:2016-03-29 04:32:11
【问题描述】:

我有一个在服务器上运行的 c++ 程序。我想从网页控制程序。

不幸的是,这对我来说是一个新领域,我想我可能走错了路。到目前为止,我所做的是在我的程序和 CGI​​ 脚本之间创建一个 IPC。当用户加载网页时,cgi 脚本运行,向我的主应用程序查询一些数据,然后创建一些 javascript 代码——即填充一些变量,另一个 js 文件读取这些变量,并使用这些变量正确显示页面。

这似乎可行,但现在我想定期更新网页(比如每两分钟左右)。我想知道我是否应该放弃我所拥有的并在两者之间实现某种套接字通信。我的替代方法是重新运行 cgi 脚本并动态重新加载变量。

我想知道这是否会被认为是一个 kludge...(同样,我对 javascript 并不太熟悉,所以很遗憾,我不知道什么是好的或坏的做法)。

【问题讨论】:

  • 听起来实现套接字(或常规的旧 ajax 通信)是最安全的。

标签: javascript c++ sockets ipc


【解决方案1】:

可以通过多种方式定期更新网页:

  1. 从您的网页中,您可以定期向 CGI 服务器发送 Ajax 调用以获取更新的数据。当该数据返回时,您可以使用 Javascript 将更新的数据放入显示的网页中。

  2. 您可以建立从网页到服务器的 webSocket 连接。一旦建立了 webSocket 连接,服务器就可以在适当的时候直接向客户端发送新数据。客户端收到新数据后,可以使用Javascript将其插入到显示的网页中。

webSocket 连接选项通常被认为更有效,因为只有当服务器实际有一些新数据时,客户端和服务器之间才会发生通信。它还可以降低显示更改的延迟并提供更有效的带宽使用,因为当服务器上没有任何新内容时,客户端不会向服务器发出请求。

要实现服务器端 webSocket 连接,除了 CGI 脚本之外,您还需要一些东西,因为 webSocket 连接是持久的。您还需要改进 C++ 程序与运行 webSocket 连接的任何进程之间的通知,这样您也可以在那里做一些高效的事情。

【讨论】:

  • 谢谢。我不知道 AJAX 是什么,但现在我已经阅读了它,这听起来很合适。在我的特殊情况下,我很容易适应我必须使用 AJAX 工作的内容(而且每两分钟总会有新数据,所以无论如何我都必须打电话)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多