這樣,有一台c++寫的頻譜儀,需要做一個網頁來實時它的顯示數據,800個點,100ms刷新一次。提供了兩個端口,一個傳輸數據一個進行控制,進行基於tcp協議的二進制數據傳輸,做個局域網形式的就行,連上就能顯示。
我的想法,顯示肯定用canvas,用的echarts,現在接收數據解析數據什麼都會,但是這個需要怎麼實現呢?看過nodejs和websocket、還有socket.io。
問題一、我還需不需要寫服務器,直接寫客戶端就行了嗎?那相關文件放在哪裡?
問題二、目前用的nodejs裡的net模塊,這個網上的例子很少,客戶端client.js也是要用cmd 裡node client.js來運行嗎?
問題三、socket.io那個方法我最中意,但是我模擬數據時用net方式可以連上軟件sokit,socket.io連不上,這個究竟能否實現tcp連接?
思路有些混亂,各路大神也可以直接說思路
喜歡你這種只討論思路提問方式。 :)
你首先要確定自己需求中的幾個細節問題:
1. 你這個頁面只是用來看數據的,還是邊看邊要把數據存下來?
2. 如果你只想用一個純頁面搞定,那為什麼局限於html模式,而不采用獨立程序模式?
接下來假設你就是要用獨立的html模式做監控,且需要對數據做一定的記錄,那你就可以考慮這麼實現:
1. 首先你的頁面必須用HTML5實現,且需要用支持websocket功能的浏覽器打開。
2. 不管你的html裡用什麼框架,最終還是要調用底層的websocket來和遠程進行通訊,而且你的通訊協議是自定義的,因此個人建議你直接操作websocket代碼更簡單,頁面操作部分可以借用jquery一類簡化你的操作
3. 顯示部分你既然決定使用echart了,那就不必在意它的實現方式是不是采用canvas,只要把div容器設置到echat中後,再開個定時器自動輪詢加載相關的數據則可。
4. 無論你數據最終是否保存,為了體現你程序的友好性,你把采集的歷史數據用html5帶的localStorage進行保存一下,並在打開頁面時自動讀取這些數據進行展示。
按照這種模式開發後,你那台采集機器需要滿足以下幾個條件:
1. 所有的html和相關的css, js等文件需要保存在一個固定目錄中,由浏覽器直接打開首頁來加載。
2. 此機器需要和頻譜儀在同一個網段,因為它需要直接訪問頻譜儀所在的地址。
3. 此機器的浏覽器建議用火狐或谷歌的最新版,以防止html5支持不全,引起不必要的麻煩。