195 lines
4.5 KiB
JavaScript
195 lines
4.5 KiB
JavaScript
import config from "@/common/config.js"
|
||
let timer = null
|
||
let retimer = null
|
||
import store from '../store'
|
||
import * as sdk from "@/common/imSdk/lim-sdk.js";
|
||
import lim from "@/common/imSdk/sdk-bridge.js";
|
||
|
||
import publicFc from '@/common/publicFc';
|
||
import localForage from 'localforage';
|
||
|
||
|
||
export default {
|
||
socketTask: null,
|
||
// 连接WebSocket
|
||
connectSocket() {
|
||
|
||
|
||
const ListenerMap = {
|
||
onSocketConnectEvent: (option, status, data) => {
|
||
console.log("已建立连接:" + JSON.stringify(status));
|
||
},
|
||
onSocketErrorEvent: (error) => {
|
||
console.log("连接出现错误:" + userId);
|
||
},
|
||
onSocketReConnectEvent: () => {
|
||
console.log("正在重连:");
|
||
},
|
||
onSocketCloseEvent: () => {
|
||
console.log("连接关闭:");
|
||
},
|
||
onSocketReConnectSuccessEvent: () => {
|
||
console.log("重连成功");
|
||
},
|
||
onOfflineMessage: (e) => {
|
||
// console.log("====================拉取到离线消息")
|
||
// console.log(e)
|
||
const userId = uni.getStorageSync("userId")
|
||
setTimeout(function() {
|
||
if (e.length > 0) {
|
||
e.map((msg) => {
|
||
|
||
setTimeout(() => {
|
||
const _data = publicFc.formatMessage(msg)
|
||
|
||
console.log(_data)
|
||
if (_data.fromId != userId) {
|
||
uni.$emit('onP2PMessage', _data);
|
||
store.dispatch('onP2PMessage', _data)
|
||
}
|
||
}, 500)
|
||
})
|
||
}
|
||
}, 500);
|
||
|
||
},
|
||
onTestMessage: (e) => {
|
||
console.log("onTestMessage :");
|
||
store.dispatch('onP2PMessage', e)
|
||
},
|
||
onP2PMessage: (e) => {
|
||
console.log("onP2PMessag e :::");
|
||
console.log(JSON.parse(e))
|
||
console.log("接收到的ws原始数据")
|
||
e = JSON.parse(e)
|
||
console.log(e)
|
||
console.log("接收到的ws格式化之后数据")
|
||
const _data = publicFc.formatMessage(e.data)
|
||
console.log(_data)
|
||
uni.$emit('onP2PMessage', _data);
|
||
store.dispatch('onP2PMessage', _data)
|
||
},
|
||
onLogin: (uid) => {
|
||
console.log("用户" + uid + "登陆sdk成功");
|
||
}
|
||
|
||
};
|
||
|
||
|
||
const userId = uni.getStorageSync("userId")
|
||
|
||
const imUserSign = uni.getStorageSync("imUserSign")
|
||
|
||
var listeners = {};
|
||
for (const v in ListenerMap) {
|
||
listeners[v] = ListenerMap[v];
|
||
}
|
||
|
||
console.log(lim)
|
||
|
||
// 防止多次建立ws链接,貌似还没有生效,需要检查
|
||
if (this.socketTask != null) {
|
||
return false
|
||
}
|
||
|
||
lim.lim.im.init(config.getImApiUrl(), config.getImAppId(), userId, imUserSign, listeners, (
|
||
sdk) => {
|
||
if (sdk) {
|
||
console.warn("====================")
|
||
this.socketTask = sdk;
|
||
console.log(this.socketTask)
|
||
|
||
console.log('sdk 成功连接的回调, 可以使用 sdk 请求数据了.');
|
||
|
||
sdk.getSingleUserInfo(userId).then(res => {
|
||
console.log("获取到自己的用户信息")
|
||
console.log(res)
|
||
if (res.code == 200) {
|
||
uni.setStorageSync('userInfo', res.data);
|
||
}
|
||
})
|
||
|
||
// sdk.getAllFriend().then(res => {
|
||
// console.warn(res)
|
||
// })
|
||
// sdk.getUserSequence().then(res => {
|
||
// console.warn(res)
|
||
// })
|
||
|
||
sdk.getUserConversationList(0).then(res => {
|
||
console.warn(res)
|
||
})
|
||
|
||
|
||
} else {
|
||
console.log('sdk 初始化失败.');
|
||
}
|
||
})
|
||
|
||
|
||
/*
|
||
|
||
this.socketTask = uni.connectSocket({
|
||
url: 'wss://im-api.q3z3.com/ws?Authorization=' + uni.getStorageSync('Authorization'),
|
||
complete: () => {}
|
||
});
|
||
this.socketTask.onOpen(res => {
|
||
console.log('WebSocket连接已打开!');
|
||
// 设置心跳
|
||
timer = setInterval(() => {
|
||
uni.sendSocketMessage({
|
||
data: 'isConnact',
|
||
success: res => {
|
||
if (res.errMsg == 'sendSocketMessage:ok') {
|
||
console.log('WebSocket已连接')
|
||
} else {
|
||
this.connectSocket()
|
||
}
|
||
}
|
||
})
|
||
}, 5000)
|
||
})
|
||
// 监听接收
|
||
this.socketTask.onMessage(res => {
|
||
if (res.data == 'ok') {
|
||
return
|
||
}
|
||
var data = JSON.parse(res.data);
|
||
fc.getPush(data);
|
||
console.log('WebSocket接收消息!');
|
||
})
|
||
// 监听关闭
|
||
this.socketTask.onClose(res => {
|
||
console.log('WebSocket连接已关闭!');
|
||
let token = uni.getStorageSync('Authorization');
|
||
if (this.socketTask && token) {
|
||
this.socketTaskClose()
|
||
retimer = setTimeout(() => {
|
||
this.connectSocket()
|
||
}, 5000)
|
||
}
|
||
})
|
||
// 监听异常
|
||
this.socketTask.onError(res => {
|
||
console.log('WebSocket连接打开失败,正在尝试重新打开!');
|
||
if (this.socketTask) {
|
||
this.socketTaskClose()
|
||
retimer = setTimeout(() => {
|
||
this.connectSocket()
|
||
}, 5000)
|
||
}
|
||
|
||
});
|
||
*/
|
||
|
||
},
|
||
// 关闭WebSocket
|
||
socketTaskClose() {
|
||
if (this.socketTask) {
|
||
this.socketTask.close()
|
||
clearInterval(timer)
|
||
clearTimeout(retimer)
|
||
console.log('关闭WebSocket!');
|
||
}
|
||
},
|
||
} |