123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 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;
|