關於網頁實現串口或者TCP通訊的說明
- 2022 年 10 月 30 日
- 筆記
概述
最近經常有網頁聯繫我,回饋為什麼他按我說的方法,寫的HTML程式碼,無法在chrome網頁中運行。這裡我統一做一個解釋,我發現好多網頁並沒有理解我的意思。
其實,要實現在HTML中進行串口或者TCP通訊,有兩種方案。
方案一:專用瀏覽器
具體的實現方法就是,一般會使用Cef來開發一個瀏覽器,然後將串口和TCP的通訊功能,擴展出來,以實現在HTML中,可以調用擴展腳本,實現通訊。相當於瀏覽器的殼代理了一下。
這種方案呢,你寫的HTML通訊程式碼,就只能使用專用的瀏覽器,不支援在其他瀏覽器中使用。這個在我部落格中能夠找到案例。
這種方案的好處呢,就是你發給客戶一個專用的瀏覽器,來展示你的平台系統。客戶不需要安裝其他的軟體。
方案二:本地CS客戶端代理
具體的實現方法就是,你寫一個CS的代理程式實現通訊功能,同時開放出來一個websocket通訊API,網頁呢,通過websocket與代理程式交互,實現通訊功能。因為HTML使用的是通用的websocket來實現串口通訊,所以主流瀏覽器都會支援。
這種方案呢,你寫的HTML通訊程式碼,可以在任何瀏覽器上運行,任何通用瀏覽器都可以使用,但是必須在客戶的電腦上安裝一個CS客戶端代理一下。
這種方案的好處呢,是你需要在客戶電腦上安裝一個代理程式,然後客戶就不限制瀏覽器了,用啥瀏覽器都可以,不改變用戶的使用習慣。
總結
由於瀏覽器考慮到安全,HTML在瀏覽器上訪問時,是不允許訪問本地資源的。本地資源包含本地的磁碟,串口設備等等。所以一般的HTML是無法實現通訊功能的。
很多同學,誤以為有什麼捷徑可以實現,其實是沒有的。我的這兩種方案只是一種拆中的方案,可以變相的實現而已,體驗上都會有折扣。
而且通常情況下windows平台用戶會多一些,一般不考慮多平台。
在網頁中實現通訊功能的,多數也還是用CS來實現,畢竟相對穩定一些。
如果場景比較少,可以採用上面的方案。
技術沒有對與錯,在什麼情況下最合適就用什麼技術,這就是對的。