之前應用webSocket解決過一個服務端處理時間過長,導致服務斷開的問題,應用webSocket長鏈接的屬性規避了這個問題,對于WebSocket的應用比較粗淺。
今天,我在瀏覽某網頁的時候想要抓去網頁上的數據,頁面上的數據是不斷變化,正常分析是使用ajax從服務端獲取數據,再用js填充到頁面中,但是當使用調試工具去獲取rest接口時,發現沒有相關的url,這就很奇怪了。可能是搜索關鍵字不準確,導致萬能的度娘也沒給出準確的解答。機緣巧合下,讓我查到html5的WebSocket能實現相關的功能。
var webSocket = new WebSocket("wss://url/ws");
webSocket.binaryType = "arraybuffer";
webSocket.onopen = function(event){
console.log(("webSocket connect at time: "+new Date()));
//發送相關參數
webSocket.send("param"));
}
//接收信息
webSocket.onmessage = function(event){
var raw_data = event.data;
//to do
}
webSocket.onclose = function(){
console.log("webSocket connect is closed");
console.log(arguments);
}
webSocket.onerror = function(){
console.log("error");
console.log(arguments);
}
對于像我這種對前端一知半解的開發來說,WebSocket還有一種防爬蟲的功效。通過chrome network頁面中的ws選項可以獲取到相關數據,只會有一條記錄,點開后會有一個data界面,里面是客戶端和服務端的數據交互。