Node-Web-Console(如下簡稱 NWC)是一個基於 Node.js 開發的網頁版 shell 應用,其想法來源於實驗室 SDN 相關項目的一次組會討論,需求大體是在網頁中嵌入 shell,而後實現從前端頁面展現的網絡拓撲中直接進入虛擬機節點進行簡單的管理。具體實現上則參考了 web-console,一個基於世界上最好的語言開發的項目。html
先來一張界面的截圖:前端
從使用體驗來看,NWC 與真正的 shell 並沒有太大區別。固然,這要感謝 jquery.terminal 插件做出的努力。而從實現原理層面來講,
NWC(以及 web-console)並不複雜,其底層通訊基於 HTTP 協議之上的 JSON-RPC 2.0 規範實現。JSON-RPC 是一個無狀態且輕量級的遠程過程調用(RPC)協議,對其不太瞭解的同窗能夠參見 JSON-RPC 2.0 Specification 或者 中文翻譯版。NWC 的後端 server 接收到用戶輸入的 command 後開啓子進程並執行之,而後將結果返回便可。node
除此以外,NWC 還具備如下特性:jquery
固然 NWC 目前還存在一些問題,好比不能執行 vi、ping 等須要等待用戶輸入或者無窮地執行一些操做的命令。這是由於目前版本的 NWC 底層通訊的 RPC 基於 HTTP,其特性決定了服務端只能被動響應客戶端的請求而沒法主動屢次推送結果。下一版的迭代中會嘗試用 websocket 替換 HTTP 來解決這一問題。 git
最後,項目地址在此:https://github.com/ChrisCindy...(直接點我也行) 。歡迎使用,歡迎拍磚。github
本文首發於個人博客(點此查看),歡迎關注。web