前言:工作中在驗(yàn)證前端頁面展示數(shù)據(jù)時(shí),接觸到websocket這一概念,這里粗略記錄下關(guān)于websocket的理解和常用方式。
(1)什么是websocket?
命名:看起來好像和socket有某種關(guān)系,但是根據(jù)查詢了解到,WebSocket只是借用了這一概念,使用方面,完全兩個(gè)東西,大概因?yàn)镾ocket早在它之前已經(jīng)是一個(gè)深入人心的概念。
官方解釋:WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動發(fā)送信息給客戶端。--百度百科
簡單理解:WebSocket是一種為了滿足瀏覽器與服務(wù)器端實(shí)時(shí)數(shù)據(jù)交互需要而制訂的一種新的網(wǎng)絡(luò)協(xié)議。
可以把WebSocket想象成HTTP,同為應(yīng)用層協(xié)議,在與服務(wù)器通信過程扮演角色類似。但是WebSocket是基于TCP的應(yīng)用層協(xié)議,只需要一次連接(握手),以后傳輸數(shù)據(jù)不需要重新建立連接,可以直接發(fā)送數(shù)據(jù),這里就區(qū)分了和http協(xié)議的不同(每次都要重新請求,服務(wù)端返回?cái)?shù)據(jù)后結(jié)束)。javascript中常用的ajax技術(shù)所做的工作也是完成前端和服務(wù)器的數(shù)據(jù)交互,但是Ajax技術(shù)需要客戶端發(fā)起請求,而WebSocket服務(wù)器和客戶端可以相互推送信息,更為靈活的支撐業(yè)務(wù)需要。
(2)前端常用方式?
前端比較常用的是在javascript中使用WebSocket,建立與服務(wù)端WebSocket服務(wù)的通信,從而請求服務(wù)端或者監(jiān)聽服務(wù)端推送數(shù)據(jù)消息,達(dá)到實(shí)時(shí)數(shù)據(jù)交互的需要。
一個(gè)參考網(wǎng)上使用python+bottle+javascript的例子
前端:

websocket后端:


(3)調(diào)試模擬websocket通信
Chrome F12查看websocket數(shù)據(jù)交互過程:
$1$ 在你得知用到websocket的界面,進(jìn)入調(diào)試模式,刷新界面,選擇2-“Network->WS”后看到的1-Name下面一些會話就是正在通信的websocket連接;
$2$ 選擇你的一個(gè)websocket會話可以在3-Frames中查看當(dāng)前數(shù)據(jù)(Receive或者Send)

$3$ Headers里面是websocket請求的URL和頭

(4)關(guān)于websocket自己摸索的一些可擴(kuò)展的思路
基于python腳本或者java代碼的一個(gè)websocket后臺服務(wù)+javascript或者python實(shí)現(xiàn)websocket客戶端+shell腳本
一個(gè)簡易查看后臺日志的定制工具
一個(gè)后臺服務(wù)監(jiān)控報(bào)警功能
...(想一萬個(gè)不如盡力做好一個(gè))
除了這些還得有服務(wù)器一些權(quán)限吧,會shell腳本吧,懂業(yè)務(wù)吧?
參考文章:
http://blog.csdn.net/qiuhuanmin/article/details/50719114
https://www.cnblogs.com/jinjiangongzuoshi/p/5062092.html
沒事多查查咯~~