【发布时间】:2012-09-03 19:07:59
【问题描述】:
我有一个底层 C 应用程序驱动一些非常密集的硬件。我目前正在为设备设计一个 Web 界面,它的大部分功能是向用户呈现状态信息。所以每隔一秒左右,用相关信息(温度,帧率,yada yada ...)更新网页上的字段。该设备运行linux并具有apache。当前设置:
- 来自 Web 状态页面的 Javascript 进行 AJAX 调用(来自 setInterval)
- PHP 文件运行,写入FIFO
- C 应用程序读取FIFO,根据输入进行一些工作(可能为空白,意味着只给我统计信息),回写到FIFO
- PHP 文件从FIFO 读取,解析,json_encode,回显
- Javascript 解析 JSON 并更新页面
这就是你进来的地方......目标是取出 PHP 中间人。对 C 程序的 AJAX 调用有哪些约定(假设它们存在)?最佳做法?
选项(据我所知):
- Sockets。让 C 程序监听特定端口. Something similar here.
- Node.js。这个我不熟悉,没用过。但是我短暂的曝光让我觉得这可能是一个很好的用途呢?据我了解......它是“服务器端的javascript”,但它实际上是C代码?只是需要一些见解。
- CGI。 cgi 可以与不断运行的 C 程序一起工作吗?还是在调用时从头开始加载 C 程序?
- HTML5 WebSockets?
任何见解表示赞赏。当然,最好的答案很可能甚至没有在上面列出。这只是我在这方面的知识范围。谢谢!
【问题讨论】:
-
这更适合论坛或聊天室。我们在 StackOverflow 专注于解决您遇到的具体问题。我并不是想说你的问题是愚蠢的、糟糕的或任何问题,它只是不在 StackOverflow 的范围内。
-
采用 node.js 方式 - 它支持 WebSockets 以防止昂贵的
setInterval轮询。不是C,是纯js。 -
@moonwave99 相当多的节点是用 c++ 编写的;) 可以用 c++ 编写节点扩展,参见 lupomontero.com/writing-node-js-modules-in-cpp
-
@padde 哦,就像 Objective-C++ for objc-c 一样:很高兴知道,谢谢!
-
@moonwave99 好吧,区别在于objective c不需要c++,而node实际上是用c++编写的。您可以将其与 ruby 的原生 c 扩展进行比较。
标签: javascript c ajax node.js