網路通訊webSocket(一)原理
阿新 • • 發佈:2018-11-05
對於開發者的我來講,大部分專案都需要用到聊天功能,例如單聊,群聊,分組,通訊等。而這一切都基於socket,那具體socket指的是啥?下面就具體好好寫寫吧。
要了解什麼是socket,得先掌握TCP/IP協議與Http協議。
首先Http協議,是超文字傳輸協議,沒有狀態的,也是屬於短連結對應於應用層;而Tcp/IP協議呢,分別作用於傳輸層、網路層,對資料進行傳輸,是一種長連線。
對於socket來講,是用來封裝TCP/IP協議的,socket是一種程式設計介面,通過使用這一協議,可以用來傳輸資料;
而http協議,需要採用“請求-響應”的方式進行資料的傳輸。
Socket嚴格來講,是一種長連線,它的連線分為三個步驟:
1、服務端監聽:時刻處於監聽的狀態;2、客戶端請求:需要提供地址與埠,向server端提出連線請求;3、連線確認:當client端提出請求之後,server端進行響應請求,建立一個新的程序,將響應資訊發給client端,client確認響應資訊,就正式建立連線。
var ws = new WebSocket("wss://echo.websocket.org"); //建立socket例項 ws.onopen = function(evt) { //連線socket成功後的回撥資訊 console.log("Connection open ..."); ws.send("Hello WebSockets!"); }; ws.onmessage = function(evt) { //接收資料後的回撥資訊 console.log( "Received Message: " + evt.data); ws.close(); }; ws.onclose = function(evt) { //關閉socket程序後的回撥資訊 console.log("Connection closed."); };
webSocket API
· new Socket // 例項socket
var ws = new WebSocket("wss://echo.websocket.org");
· webSocket.readyState // 返回例項socket的狀態
switch (ws.readyState) {
case WebSocket.CONNECTING:
// do something
break;
}
· webSocket.onopen // 連線socket成功後的回撥
ws.onopen = function () { ws.send('Hello Server!'); }
· webSocket.onclose // 關閉socket後的回撥
ws.onclose = function(event) {
// handle close event
};
· webSocket.onmessage // 指定接收資料後的回撥
ws.onmessage = function(event) {
var data = event.data;
// 處理資料
};
· webSocket.send //向server端傳遞資料
ws.send('your message');
· webSocket.onerror //指定錯誤的回撥
socket.onerror = function(event) {
// handle error event
};