2013-02-05 45 views
0

我有一個用C++編寫的程序,它讀取this board的值。反正那個部分並不重要。我擁有的是不斷變化的數據,我想繪製這些數據。我希望能夠使用Web瀏覽器來顯示數據,因爲有這麼多的開源圖形和圖表用JavaScript編寫。 所以我的問題是從我的c + +程序發送數據到瀏覽器使用HTML5 localstorage交換信息

我已經調查和UDP瀏覽器中不可用,所以我將不得不使用TCP。 TCP websockets不是那麼快,我想使用html5 localstorage來代替。我的意思是讓我的C++程序寫入localStorage上的數據庫,然後javascript將等待該變量的值存在,並創建某種協議來完成這個工作。本地存儲是例如真快:

<script type="text/javascript"> 

    var counter = 0; 

    window.onload = function() { 

     function Test() { 

      counter++; 

      localStorage.p = counter + ""; // perform write 

      var read = localStorage.p; // perform read 

      if (read == "5000") 
       alert((new Date() - now)); // shows 45 
      else 
       Test(); // loop again 
     } 

     var now = new Date(); 
     Test(); 
    } 

</script> 

該腳本需要54毫秒,其讀取和寫入5000倍!這意味着下次我不會爲瀏覽器創建一個插件,而只是實現某種協議,使我能夠使用localStorage交換信息。例如,我可以讓瀏覽器等待變量x存在。一旦存在,我然後通過瀏覽器創建一個變量y,通知C++程序它已準備好接收數據等等。 localStorage的僅僅是位於下的SQLite數據庫:\用戶[用戶] \應用程序數據\本地\谷歌\鍍鉻\用戶數據\ DEFAULT \本地存儲

我還沒有看到使用這種方法的人在線。也許這太危險了,Sqlite無法處理好多個線程,我會浪費時間創建這個程序。

那麼我應該開始實施這個協議?我應該使用websockets嗎?或者我應該試試https://stackoverflow.com/a/10219977/637142

+1

如果你想實時圖表(即亞秒刷新率),網絡瀏覽器不會是我的第一選擇。這實際上是我最後的選擇。特別是我不會嘗試使用你想要使用的這種技巧。除非它只適用於你,沒有人會使用它。 –

+0

你是對的我希望能夠使用webbrowser的原因,然後該程序將在任何計算機上運行... –

+1

一個Web瀏覽器可以工作,但訪問特定的瀏覽器內部數據庫可能不是很便攜。從中央服務器推送Websocket(如果支持的話)可能是最好的解決方案,接下來是常規的AJAX調用,所有瀏覽器甚至更老的瀏覽器都會支持。 –

回答

0

我會node.js去中間件從你的C++的瀏覽器,而不是直接使用的WebSocket(在那裏做那)與http://socket.io/去,這將使你的生活變得更容易:)

+0

你不明白這個問題,我沒有聲音... –

+2

@Tono Nam:你不明白他的答案。 –