2010-05-25 78 views
0

我需要一个简单的方法来使用XMLHttpRequest作为Web客户端访问嵌入式设备中应用程序的一种方式。我越来越困惑,试图弄清楚如何制作一些轻薄的东西来处理到达Web服务器的XMLHttpRequests,并且可以将它们翻译成应用程序调用。处理XMLHttpRequest来调用外部应用程序

的情况:

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

我想,我想:

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

我该怎么做?

  • 是解释CGI头和HTML有良好的C++库,使我没有做任何语法处理,我可以处理请求/响应的内容?
  • 在处理XMLHttpRequest和CGI接口时,是否有任何关于服务器端的确切参考?
  • 是否有任何包可以完成这项工作的大部分工作,或者我将不得不从头开始构建非HTTP/CGI内容?

回答

0

如果我理解正确的话,我的方式解决这个问题将是一个3层(不要挂断,我们都已经听说过了3层的流行词汇这么多):

  1. 对于Web服务器(Lighttpd,Apache,...),浏览器上的JavaScript(ExtJs)会使用XmlHttpRequest,raw(裸)或wrapper来实现HTTP,Ajax无关紧要。
  2. 由于嵌入式设备上的应用程序可以通过套接字进行通话,因此网络服务器将使用套接字与嵌入式设备通话。
  3. 您可以决定在JavaScript上放置更多的业务逻辑,并保持Apache/Lighttpd代码非常精简,以免超时。

通过这种方式,您可以利用所有您熟悉的技术。第1层和第2层之间的Ajax并不新鲜,并使用2和3之间的插槽。

+0

我知道什么是套接字,问题是如何将任何HTTP到服务器的信息转换成可用的信息位,并生成正确的HTTP响应。我还没有找到有关如何在C/C++中实现后端进程的好资源,而不是像PHP那样安装包。 – Ian 2010-05-25 01:44:51

0

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

如果你想最终从嵌入式设备检索数据并在浏览器上呈现,然后让浏览器向Web服务器发出请求,Web服务器使用套接字与嵌入式设备进行通信。数据如何在浏览器和服务器之间传递,这是正常的HTTP,不多也不少。 Web服务器和嵌入式设备之间的相同,除了套接字而不是HTTP。

所以,如果你只是采取一个简单的问题,就像添加2个数字。除了这两个输入数字将传递到Web服务器,然后Web服务器传递到嵌入式设备,在此进行添加。结果被传回到Web服务器,返回到浏览器进行渲染。如果你能做到这一点,你就可以在任何你想要的地方使数据流动。

如何解析数据取决于您如何设计数据的结构,这些数据可能包含围绕有效内容的容器。

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

...但是这并不比你如何处理HTTP请求上有什么不同该服务器使用您的服务器端语言。

...如何实现一个后台进程在C/C++,而不是安装一个软件包,如PHP

如果嵌入式设备在C/C++编程,你必须知道该怎么办使用C/C++进行套接字编程。在你的Web服务器上,你也必须知道如何进行套接字编程,除了那是服务器端语言。

希望这会有所帮助。

相关问题