利用mochiweb让服务端主动推送数据至前端页面
對于智能化監控軟件,從wincc等國外的有相當積累的系統,以及國內一些小型的智能化集成軟件,通常其監控數據通過前端綁定控件的方式,做到了實時的通訊,通過控件直接和后端服務交互。這種方式可以靈活的組態,但是對于當今用戶終端輕量化趨勢,其每一個監控點都對應一個控件,頁面在用戶體驗上顯得非常笨拙。
到了后期,一些系統開始考慮輕量的前臺頁面,AJAX開始流行,以及Comet技術,利用服務端推送的方式,通過長連接實現輕量化的數據展示。對于一些智能化常見的監控系統,例如LED、溫度、電壓,這些在BAS,FAS以及SCADA里常見的,無非提供了一個較大的提高。
這里提供了另外一種技術,可以直接通過mochiweb,實現后臺數據的推送。mochiweb是一個用Erlang編寫的服務器框架,其優勢在于推送效率,這也是erlang語言的一大吸引人的地方,并且小巧靈活,易于理解。對于頁面布局簡單,但是對實時性要求高的監控數據的推送,是一個較好的選擇。
mochiweb的輕量在于其web服務的輕量,搭建簡單(linux),下面提供了在fedora環境下安裝和搭建的步驟,簡要實現了一個后臺服務,通過socker接口接收數據,并實時推送展示到前臺頁面上:
直接下載其源碼
git clone https://github.com/mochi/mochiweb.git
創建新項目(這里注意,mochiweb是直接創建一個輕量的web服務器,如果您有過使用,請原諒小編的嘮叨)
make app PROJECT=mochipro PREFIX=/home/
當您下載了mochiweb后,可以直接看其中的README文檔,有說明具體的建項目方式
當創建完成后,進入新創建的目錄,啟動start-dev.sh腳本即可。現在您已經創建了一個web服務并運行,就是這么簡單。
現在按照小編所說,我們要做的還有在現在的mochiweb基礎上,實現一個TCP的服務端,接收數據并實時展示在頁面上,這里的修改很簡單,只需要修改mochipro_web.erl里面的幾個方法即可,首先是start(Options)方法中,創建一個TCP服務端并監聽,并且把解析的邏輯寫好即可,這里列出改后的代碼,和原始代碼的不同參考原始的代碼比對即可:
OK,現在只要自己開發一個TCP或多個(領教下其并發支持)TCP客戶端,不斷的向該服務器發送數據,即可看到炫酷的表現了,數據在無需刷新頁面的情況下,快速的在頁面更新。mochiweb的內部函數解析可以在網上查找,搭建過程中可能根據環境的不同會有不同的問題,包括一些問題細節,例如IP端口設置,頁面編碼,這里因為篇幅均省略,歡迎關注公眾號:智能化IT系統,進行進一步討論。
當然該方式也有缺陷,就是上文提到的組態,以及對于元素復雜的頁面的展示。所以使用還是要綜合業務要求,頁面復雜度,性能等決定方案,對于實時性要求高,界面簡單的系統來說,不妨一試。
總結
以上是生活随笔為你收集整理的利用mochiweb让服务端主动推送数据至前端页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【代码规范】常见命名规范
- 下一篇: 在两个静态HTML页面之间传递参数的一个