@icanvas/apis
Version:
这是icanvas的Api功能包
47 lines (45 loc) • 1.59 kB
JavaScript
export let Socket = {};
export let MySocket = {};
Socket.open = function(url, key = 'default') {
return new Promise(function(success, fail) {
if (MySocket[key]) return fail('链接已存在');
if (ENV.core == 'wxgame') {
let socket = wx.connectSocket({ url });
socket.onOpen(() => success((MySocket[key] = socket)));
} else if (ENV.core == 'web') {
let socket = new WebSocket(url);
socket.onopen = () => success((MySocket[key] = socket));
}
});
};
Socket.send = function(data, key = 'default') {
if (!MySocket[key]) return Promise.reject('不存在的链接');
if (ENV.core == 'wxgame') {
return new Promise((success, fail) => {
MySocket[key].send({ success, fail, data: JSON.stringify(data) });
});
} else if (ENV.core == 'web') {
return Promise.resolve(MySocket[key].send(JSON.stringify(data)));
}
};
Socket.close = function(key = 'default') {
if (!MySocket[key]) return Promise.reject('不存在的链接');
if (ENV.core == 'wxgame') {
return new Promise((success, fail) => MySocket[key].close({ success, fail })).then(() => delete MySocket[key]);
} else if (ENV.core == 'web') {
return Promise.resolve(MySocket[key].close()).then(() => delete MySocket[key]);
}
};
Socket.message = function(fn, context, key = 'default') {
if (!MySocket[key]) return Promise.reject('不存在的链接');
if (ENV.core == 'wxgame') {
MySocket[key].onMessage(function(res) {
fn.call(context, res.data);
});
} else if (ENV.core == 'web') {
MySocket[key].onmessage = function(res) {
fn.call(context, res.data);
};
}
};
export default Socket;