以前的网络通信方式都是通过客户端向服务端发起请求,然后由服务端返回数据以达到通信的目的,这种方式有个缺点,不能实现服务端主动向客户端返回数据来达到通信的目的,采用这种短连接方式实现客户端和服务端之间的即时通讯技术只能使用轮询,即在特定的时间间隔(如1秒),由客户端向服务端发起请求,然后由服务端返回数据。这种方式要不断的向服务端发起请求,既浪费性能又占用带宽,在这种情况下,小程序提供相关API应用WebSocket。

各种API方法和参数详见官方文档,这里不多赘述,下面展示一个简单的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var socketOPen = false;
var socketMsgQueue = [];
wx.connectSocket({ // 创建连接
url: 'wss://www.myserver.com',
});
wx.onSocketOpen(function(res){
socketOpen = true;
// 连接打开后先处理之前栈中数据
for(var i = 0, msg; msg = socketMsgQueue[i]; ++i){
sendMsg(msg);
}
socketMshQueue = [];
});
function sendMsg(msg){
// 如果连接在请求中还未打开,先将数据出入信息栈中
if(!socketOpen){
socketMsgQueue.push(msg);
return;
}
// 如果连接打开,发送数据
wx.sendSocketMessage({
data: msg
});
}