/** * @param {string} url * @param {Function} success * @param {Function} fail * @description 创建新的scoket链接 */ export function scoketNew(url, success = function() {}, fail = function() {}) { const scoket = uni.connectSocket({ url, success, fail }); return { scoket, scoketOpen, scoketSend, scoketClose, scoketMessage } } /** * @param {Object} scoket 会话对象 */ export function scoketOpen() { let that = this; return new Promise((resolve, rejact) => { that.scoket.onOpen(res => { resolve(res) }) }) } // 发送消息 /** * @param {Object} data 发送的数据 */ export function scoketSend(data) { let that = this; return new Promise((resolve, rejact) => { that.scoket.send({ data: JSON.stringify(data), success: res => { resolve(res) }, fail: res => { rejact(res) }, }); }) } /** * @@description 关闭会话链接 */ export function scoketClose() { this.scoket.close({ success(res) { console.log('关闭成功', res); }, fail(err) { console.log('关闭失败', err); } }) } /** * @@description 监听会话 */ export function scoketMessage(fun) { this.scoket.onMessage(res => { const data = JSON.parse(res.data); if (data.code) { if (+data.code == 60018) { console.log('scoket返回错误',data); } } else { fun(data) } }); } // this.socketTask.onOpen(res => { // console.log('WebSocket连接正常打开中...!'); // this.socketOpen = true; // // 注:只有连接正常打开中 ,才能正常收到消息 // this.socketTask.onMessage(res => { // this.client_id = JSON.parse(res.data).client_id; // console.log(JSON.parse(res.data)); // if (JSON.parse(res.data).code == 10501) { // console.log('服务器问题'); // uni.showLoading({ // title: '断线重连' // }); // // this.closeSocket(); // } else if (JSON.parse(res.data).code == 0) { // this.$api.msg(JSON.parse(res.data).msg); // } else { // console.log('连接成功'); // // ls.content.indexOf('http') // let newmessage = JSON.parse(res.data); // let add_time = getTime(newmessage.timestamp) // newmessage = { // avatar: newmessage.avatar, // content: newmessage.content, // nickname: newmessage.nickname, // order_id: newmessage.order_id, // type: newmessage.m_type, // uid: newmessage.uid, // add_time: add_time // } // if (newmessage.type == 5) { // newmessage.content = newmessage.content.split(','); // newmessage.content[0].split('?') // } // if (newmessage.order_id == this.order_id) { // // let ques_name = this.que_url // this.MsgList = this.MsgList.concat(newmessage); // this.MsgList = this.MsgList.map(e => { // e.add_time = Date.parse(e.add_time).toString(); // e.add_time = e.add_time.substr(0, 10); // return e; // }); // for (let i = 0; i < this.MsgList.length; i++) { // let length = this.MsgList.length; // //当前记录时间 // let newTime = this.MsgList[i].add_time; // //上一条记录时间 // if (i + 1 < length) { // let lastTime = this.MsgList[i + 1].add_time; // let time = (this.MsgList[i + 1].add_time) - (this.MsgList[i].add_time); // if (time > 300) { // this.MsgList[i].time = true; // } // } // } // this.MsgList = this.MsgList.map(e => { // e.add_time = getTime(e.add_time); // return e; // }); // console.log(334, this.MsgList) // } // this.$nextTick(function() { // this.scrollToBottom(); // }); // } // }); // let join = '{"type":"handshake","role":"user","uid":' + this.userInfo.uid + '}'; // console.log(join); // this.socketTask.send({ // data: join, // success: res => { // console.log('消息发送成功'); // } // }); // });