自定义构造函数
发布时间:2018-04-17 15:55:58
微信小程序的socket连接
1.module
//连接socket
function connect(url){
wx.connectSocket({
url: url
});
}
export var Socket = function(url) {
this.events = {};//添加属性
connect(url);//连接socket
wx.onSocketMessage((res)=>{//=>避免this指向wx而不是Socket
var data = null;
try{
data = JSON.parse(res.data);//将字符串转换为数组
}catch(e){
}
if(data){
var event_name = data[0];//监听socket接收服务器返回的信息,获取事件名
if (this.events[event_name]) {//若事件名存在于events属性的对象中,则执行回调
this.events[event_name](res.data[1]);
}else{
throw new Error('该事件不存在!');
}
}else{
console.warn("Socket 响应内容为空!!!");
}
});
};
Socket.prototype={
on:function(event_name,callback){//定义原型方法
if (!this.events[event_name]){//如果不存在事件名,则在属性events里添加一个事件回调
this.events[event_name] = callback;
},
send:function(data){//传送数据到socket服务器
wx.sendSocketMessage({
data: data,
success:res=>{
console.log(res,"socketSend");
}
});
},
close:function(){//关闭socket
wx.closeSocket();
}
}
}
2.在js页面引入Socket
import { Socket } from '../../utils/socket.js';
3.调用Socket
//创建socket连接
var socket = new Socket('连接地址');
//自定义socket中on函数的事件,实现当socket发送数据给客户端时客户端需要做的内容
socket.on("init", function(data) {
console.log(data, 'init');
});