0

我需要一种简单XMLHttpRequest的方法来让 Web 客户端访问嵌入式设备中的应用程序。我很困惑试图弄清楚如何制作轻薄的东西来处理XMLHttpRequests网络服务器的到来并将这些转换为应用程序调用。

情况:

  • 使用 Ajax(特别是 ExtJS)的 Web 客户端需要异步发送和接收到现有的嵌入式应用程序。这不仅仅是为了拥有一个胖客户端/瘦服务器,客户端需要对应用程序状态进行后台检查。
  • 应用程序可以公开一个套接字接口,其中包含一组已知的命令、事件和配置值。配置可能会作为 XML 传输,因为它来自 SQLite 数据库。
  • 在客户端和应用程序之间是一个 lighttpd Web 服务器,它运行着以某种方式处理翻译的东西。就是问题所在。

我想我想要什么:

  • Lighttpd 可以使用 FastCGI 将所有内容路由XMLHttpRequest到外部进程。这个过程将理解 HTML/XML,并在它和应用程序的语言之间进行转换。它将具有自定义逻辑来模拟向客户端推送通知(接收 XMLHttpRequest,在下一个通知可用之前不响应)。
  • C/C++。我真的很想避免安装Java/PHP/Perl在嵌入式设备上。所以我需要更多的底层理解。

我该怎么做呢?

  • 是否有很好的 C++ 库来解释 CGI 标头和 HTML,这样我就不必进行任何语法处理,我可以只处理请求/响应内容?
  • XMLHttpRequest在处理和 CGI​​ 接口时,是否有关于服务器端发生的确切情况的任何好的参考?
  • 是否已经有任何软件包可以完成大部分工作,还是我必须从头开始构建非 HTTP/CGI 的东西?
4

2 回答 2

0

我不是说你不知道socket。我刚刚提出了一种方法来描述我听到很多词的问题:XML/HTML/Ajax/XmlHttpRequest/Java/PHP/Perl/C++/CGI 等等,并提供了一种简化为更小、更好理解的方法问题。让我澄清一下:

如果您想最终从嵌入式设备检索数据并在浏览器上呈现,则让浏览器向 Web 服务器发出请求,Web 服务器使用套接字与嵌入式设备通信。数据如何在浏览器和服务器之间传递,这就是普通的 HTTP,不多也不少。Web 服务器和嵌入式设备之间也是一样的,除了套接字而不是 HTTP。

因此,如果您只是解决一个简单的问题,例如将 2 个数字相加。除了这 2 个输入数字会被传递到 Web 服务器,然后 Web 服务器会传递到嵌入式设备,在那里执行加法。结果被传回 Web 服务器,返回给浏览器进行渲染。如果你能做到这一点,你已经可以让数据流向任何你想要的地方。

如何解析数据取决于您如何设计可能包含包装有效负载的容器的数据结构。

“......无论 HTTP 进入服务器,变成可用的信息位,并生成正确的 HTTP 响应”

...但这与您使用服务器端语言在服务器上处理 HTTP 请求的方式没有什么不同。

...如何在 C/C++ 中实现后端进程,而不是像 PHP 那样安装包

如果嵌入式设备是用 C/C++ 编程的,你需要知道如何用 C/C++ 进行套接字编程。在您的 Web 服务器上,您还必须知道如何使用该服务器端语言进行套接字编程。

希望这可以帮助。

于 2010-05-25T02:46:58.480 回答
0

如果我理解正确的话,我处理这个问题的方式将是 3 层(不要对我们都听说过的 3 层流行语过于关注):

  1. 浏览器上的 JavaScript (ExtJs) 与 Web 服务器(Lighttpd、Apache 等)讨论 HTTP、使用 XmlHttpRequest 的 Ajax、原始(裸)或包装器并不重要。
  2. 由于嵌入式设备上的应用程序可以通过套接字进行通信,因此 Web 服务器将使用套接字与嵌入式设备进行通信。
  3. 您可以决定将更多业务逻辑放在 JavaScript 上,并保持 Apache/Lighttpd 代码非常精简,以免超时。

通过这种方式,您可以利用您已经熟悉的所有技术。第 1 层和第 2 层之间的 Ajax 并不是什么新鲜事物,并且在 2 和 3 层之间使用套接字。

于 2010-05-25T01:37:41.050 回答