网络通信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
};

猜你喜欢

转载自blog.csdn.net/xieyixiao_123/article/details/79300575