import config from './config'; const im = { socket : {}, status : false, //host url : '', //推送路径 push_path : '', init : function(key, url, callback, connect) { if (url) { this.url = url; } else { this.url = config.im.host; } this.connect(key, callback, connect); }, connect : function(key, callback, connect) { var self = this; this.close(key); this.socket[key] = uni.connectSocket({ url: this.url, complete: (res)=> { } }); this.socket[key].onOpen(function (res) { if (connect) { connect(true, res); } console.info('open'); self.status = true; self.socket[key].onMessage(function (res) { if (res.data.indexOf('{') != -1) { var data = eval("("+res.data+")"); } else { var data = res.data; } if (callback) { callback(data); } }); }); this.socket[key].onClose(function (res) { if (connect) { connect(false, res); } console.info('close'); self.status = false; }); this.socket[key].onError(function (res) { console.info('error'); self.connect(callback, connect); }); }, close : function(key) { var self = this; if (this.socket[key]) { this.socket[key].close({ success(res) { self.status = false; }, fail(err) { self.status = true; } }) } }, get : function(vue, url, options, callback, err_callback) { this.request(vue, url, options, callback, err_callback); }, post : function(url, options, callback, err_callback) { this.request('post', url, options, callback, err_callback); }, request : function(vue, url, options, callback, err_callback) { if (!options) { options = {}; } var param = options; param.noloading = 1; dever.post(this.push_path, param, function(t) { url += '?timestamp=' + t.timestamp + '&pop_token=' + t.token + '&login_uid=' + t.login_uid; dever.config.im = t; options.login_uid = t.login_uid; if (t.friend_uid) { options.friend_uid = t.friend_uid; } delete options.noloading; http.request(vue, url, options, callback, err_callback, 'im'); }); } } export default im;