WebSocket用於在Web瀏覽器和服務器之間進行任意的雙向數據傳輸的一種技術。WebSocket協議基於TCP協議實現,包含初始的握手過程,以及后續的多次數據幀雙向傳輸過程。其目的是在WebSocket應用和WebSocket服務器進行頻繁雙向通信時,可以使服務器避免打開多個HTTP連接進行工作來節約資源,提高了工作效率和資源利用率。
WebSocket看成是一種類似TCP/IP的socket技術;此socket在Web應用中實現,並獲得了和TCP/IP通信一樣靈活方便的全雙向通信功能。
WebSocket協議由RFC 6455定義。協議分為兩個部分: 握手階段和數據通信階段。
WebSocket為應用層協議,其定義在TCP/IP協議棧之上。WebSocket連接服務器的URI以"ws"或者"wss"開頭。ws開頭的默認TCP端口為80,wss開頭的默認端口為443。
以下就是關於對websocket的封裝和調用
//以下是對於一個socket的方法封裝,
//參數1:parms 是send的時候需要發送的參數
//參數2:callback 是當websocket有返回數據的時候對數據的處理顯示
socketInit:function (params,callback) {
if (typeof WebSocket === "undefined") {
console.log("您的瀏覽器不支持socket");
} else {
window.socket = new WebSocket(window.TIME_URL );
// 監聽socket連接
socket.onopen = function () {
socket.send(params);
console.log("websocket連接成功");
}
// 監聽socket消息,消息發送過來調用表格渲染的方法
socket.onmessage = function (msg) {
if(callback){
callback(msg);
}
};
// 監聽socket錯誤信息
socket.onerror = function () {
console.log("websocket連接錯誤")
};
//關閉socket
socket.onclose = function () {
console.log("websocket關閉")
};
socket.reconnect = function () {
socket.onclose();
socket = new WebSocket(window.POINTVALUE_URL );
}
}
}
//調用的此方法如
socketInit(JSON.stringify({"type": "time"}),function (msg) {
//在此處寫關於socket 返回數據的處理的
console.log(msg);
})