2010-05-25 74 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服務器上,你也必須知道如何進行套接字編程,除了那是服務器端語言。

希望這會有所幫助。

相關問題