对于开发者的我来讲,大部分项目都需要用到聊天功能,例如单聊,群聊,分组,通信等。而这一切都基于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
};