我有一个在服务器上运行的 C++ 程序。我想从网页控制程序。
不幸的是,这对我来说是新领域,我想我可能误入歧途了。到目前为止我所做的是在我的程序和 CGI 脚本之间创建一个 IPC。当用户加载网页时,cgi 脚本运行,向我的主应用程序查询一些数据,然后创建一些 javascript 代码——即它填充一些变量,另一个 js 文件读取这些变量,并使用它来正确显示页面。
这似乎可行,但现在我想定期更新网页(比如每两分钟左右)。我想知道我是否应该放弃我拥有的东西并在两者之间实现某种套接字通信。我的替代方法是重新运行 cgi 脚本并动态重新加载变量。
我想知道这是否会被认为是一种拼凑......(同样,我对 javascript 不太熟悉,所以不幸的是,我不太清楚什么是好的或坏的做法)。
最佳答案
可以通过多种方式定期更新网页:
从您的网页,您可以定期向 CGI 服务器发送 Ajax 调用以获取更新的数据。返回该数据后,您可以使用 Javascript 将较新的数据放入显示的网页中。
您可以建立从网页到服务器的 webSocket 连接。一旦建立了 webSocket 连接,服务器就可以在适当的时候直接向客户端发送新数据。客户端在收到新数据后,可以使用 Javascript 将其插入到显示的网页中。
webSocket 连接选项通常被认为更有效,因为只有当服务器实际有一些新数据时,客户端和服务器之间才会进行通信。它还提供了更低的延迟来显示更改并提供更高效的带宽使用,因为当服务器上没有任何新内容时,客户端不会向服务器发出请求。
要实现服务器端 webSocket 连接,除了 CGI 脚本之外,您还需要一些东西,因为 webSocket 连接是持久的。您还需要致力于改进 C++ 程序与运行 webSocket 连接的任何进程之间的通知,这样您也可以在那里做一些高效的事情。
关于javascript - C++ 和远程 Javascript 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34423828/