UNPKG

@icanvas/apis

Version:

这是icanvas的Api功能包

47 lines (45 loc) 1.59 kB
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;