1. 程式人生 > >網路通訊webSocket(一)原理

網路通訊webSocket(一)原理

對於開發者的我來講,大部分專案都需要用到聊天功能,例如單聊,群聊,分組,通訊等。而這一切都基於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
};