2012-09-03 68 views
1

我有一個潛在的C應用程序驅動一些相當密集的硬件。我目前正在爲該設備設計一個Web界面,其大部分功能是向用戶顯示狀態信息。所以每隔一秒鐘左右,更新網頁上的相關信息(溫度,幀速率,yada yada ...)字段該設備運行Linux和Apache。當前設置:從網絡狀態頁AJAX調用運行C代碼的最佳實踐?

  1. 的Javascript使一個AJAX調用(從setInterval的)
  2. PHP文件運行時,寫入FIFO
  3. C應用程序讀取FIFO,確實根據輸入的一些工作(可能是空白,意義只是給我的統計數據),寫回FIFO
  4. PHP文件從FIFO讀取,分析,json_encode,回聲
  5. 的JavaScript解析JSON和更新

這裏是你進來的目標......目標是取出PHP中間人。對於C程序的AJAX調用,有什麼約定(假設它們存在)?最佳實踐?

選項(據我所知):

  • Sockets。讓C程序在特定端口上偵聽.Something similar here.
  • Node.js.我不熟悉這一點,我從來沒有使用它。但是我短暫的曝光讓我覺得這可能對它有很大的用處?據我瞭解...它是「在服務器端的JavaScript」,但它實際上是C代碼?這裏需要一些見解。
  • CGI。 CGI可以與一個持續運行的C程序一起工作嗎?或者在被調用時從零開始加載C程序?
  • HTML5 WebSockets

任何洞察讚賞。當然,最好的答案很可能沒有在上面列出。這只是我在這方面知識的程度。謝謝!

+0

這是更適合在論壇或聊天室。我們這裏的StackOverflow專注於解決您所面臨的具體問題。我沒有試圖說你的問題是愚蠢的,不好的或者其他的,它只是不在StackOverflow的範圍內。 – orlp

+0

轉到node.js的方式 - 它支持WebSockets,以防止昂貴的'setInterval'輪詢。這不是C,它是純粹的js。 – moonwave99

+1

@ moonwave99相當數量的節點是用C++編寫的;)可以用C++編寫節點擴展,參見http://www.lupomontero.com/writing-node-js-modules-in-cpp/ –

回答

1

我們使用C庫libwebsockets(http://libwebsockets.org/)在JavaScript和C++應用程序之間進行通信。在我們的例子中,我們通過websockets向C++後端發送和接收JSON。

在你的情況下,你可以採用你現在通過Ajax發送的相同數據,並通過websocket發送給C程序。然後,C程序可以生成與PHP程序生成的JSON相同的JSON,並通過websocket將其返回給JavaScript。