vue腾讯IM登录监听新消息
结合上⼀篇的,我是选择了第⼆种,本⽂介绍的是vue登录sdk
import webim from '@/static/js/webim'
var sdkAppID = 1400170345;
var accountType = 36862;
var accountMode = 0; // 0为独⽴模式 1为托管模式
//当前⽤户⾝份
var loginInfo = {
'sdkAppID': sdkAppID, //⽤户所属应⽤id,必填
'appIDAt3rd': sdkAppID,
'identifier': 'admin', // 当前⽤户ID,必须是否字符串类型,必填(实例)
/
/ 'identifier': Item('identifier'), // 当前⽤户ID,必须是否字符串类型,必填正式开发的时候需要根据个⼈信息去后台获取⽤户ID
'accountType': accountType, //⽤户所属应⽤帐号类型,必填
// 'userSig': Item('userSig'), // 正式开发的时候需要根据个⼈信息去后台获取⾝份凭证
'userSig': "eJxlz11PwjAUgOH7-Yql10a6j1Iw8WIwnB9DkSqJ3Cx1LeNkrCtbQZD4342TxCae2*c9OTknx3Vd9JKyS57n9U6ZzBy1RO6VizC6*EOtQWTcZEEj-q E8aGhkxldGNh16hBAfY7sBIZWBFZwLLipQFreizLobv-shxh7FQUjsBIoOp5PX8V0iTR7JeC1ujpQ*l8mnul9SHrNCrBO6GeBemz7mLB498CqCSRTEQOd6sV SjqNrdsmI8ZDXb4lR9PL3PZMQ2h-nibdvLy2B6bZ00UMnzQ2FI-H5-OLB0L5sWatUFPvaI5wf4Z5Dz5XwDGltdJQ__",
//当前⽤户⾝份凭证,必须是字符串类型,必填
'identifierNick': "admin", //当前⽤户昵称,不⽤填写,登录接⼝会返回⽤户的昵称,如果没有设置,则返回⽤户的id
'headurl': null, //当前⽤户默认头像,选填,如果设置过头像,则可以通过拉取个⼈资料接⼝来得到头像信息
};
var selType = webim.webim.SESSION_TYPE.C2C; // 当前聊天类型
var selToID = null; // 当前选中聊天id(当聊天类型为私聊时,该值为好友帐号,否则为号)
var selSess = null; // 当前聊天会话对象
export default{
name: "chat",
components: {
},
data(){
return {
}
},
computed: {},
methods:{
// 初始化数据
initList () {
let that = this;
// 监听连接状态回调变化事件
var onConnNotify = function (resp) {
var info;
switch (resp.ErrorCode) {
case webim.webim.CONNECTION_STATUS.ON:
webim.webim.Log.warn('建⽴连接成功: ' + resp.ErrorInfo);
break;
case webim.webim.CONNECTION_STATUS.OFF:
info = '连接已断开,⽆法收到新消息,请检查下您的⽹络是否正常: ' + resp.ErrorInfo;
alert(info);
webim.webim.Log.warn(info);
break;
case webim.webim.CONNECTION_STATUS.RECONNECT:
info = '连接状态恢复正常: ' + resp.ErrorInfo;
alert(info);
webim.webim.Log.warn(info);
webim.webim.Log.warn(info);
break;
default:
webim.('未知连接状态: =' + resp.ErrorInfo);
break;
}
};
//监听 C2C 消息通道的处理,⽅法在 receive_new_msg.js ⽂件中
var onC2cEventNotifys = {
"92": MsgReadedNotify,//消息已读通知
};
//监听事件
var listeners = {
"onConnNotify": onConnNotify//监听连接状态回调变化事件,必填
,"jsonpCallback": this.jsonpCallback//IE9(含)以下浏览器⽤到的 jsonp 回调函数,
,"onMsgNotify": MsgNotify//监听新消息(私聊,普通(⾮直播聊天室)消息,全员推送消息)事件,必填 ,"onC2cEventNotifys": onC2cEventNotifys//监听 C2C 系统消息通道
};
//初始化时,其他对象,选填
var options = {notify for mi band
'isAccessFormalEnv': true, // 是否访问正式环境,默认访问正式,选填
'isLogOn': true // 是否开启控制台打印⽇志,默认开启,选填
};
if (webim.webim.checkLogin()) { // 检查是否登录返回true和false,不登录则重新登录
console.log('已登录');
that.initRecentContactList(); // 获取信息列表
} else {
webim.webim.login(
loginInfo, listeners, options,
function (resp) {
console.log('resp:',resp);
loginInfo.identifierNick = resp.identifierNick;//设置当前⽤户昵称
that.initRecentContactList();
},
function (err) {
alert(err.ErrorInfo);
}
);
}
},
//IE9(含)以下浏览器⽤到的 jsonp 回调函数
jsonpCallback(rspData) {
//设置 jsonp 返回的
webim.setJsonpLastRspData(rspData);
},
//监听新消息事件 newMsgList 为新消息数组,结构为[Msg]
onMsgNotify(newMsgList) {
console.log('newMsgList:',newMsgList);
var sess, newMsg;
// 获取所有聊天会话
var sessMap = webim.webim.MsgStore.sessMap();
console.log('sessMap:',sessMap);
if (newMsgList.length != 0) {
this.initRecentContactList();
}
for (var j in newMsgList) { // 遍历新消息
newMsg = newMsgList[j];
if (Session().id() == selToID) { // 为当前聊天对象的消息
selSess = Session();
//在聊天窗体中新增⼀条消息
//console.warn(newMsg);
//console.warn(newMsg);
this.addMsg(newMsg);
}
}
// 消息已读上报,以及设置会话⾃动已读标记
webim.webim.setAutoRead(selSess, true, true);
for (var i in sessMap) {
sess = sessMap[i];
if (selToID != sess.id()) { // 更新其他聊天对象的未读消息数
this.pe(), sess.id(), sess.unread());
}
}
},
//初始化聊天界⾯最近会话列表
initRecentContactList () {
let that = this;
RecentContactList({//获取会话列表的⽅法
'Count': 10 //最近的会话数 ,最⼤为 100
}, function (resp) {
console.log('resp_;',resp);
if (resp.SessionItem){
let items = resp.SessionItem;
console.log('items:',items);
// 这⾥可以对数据进⾏相应的处理
webim.webim.syncMsgs(that.initUnreadMsgCount); // 初始化最近会话的消息未读数
}else{
}
}, function (resp) {
//错误回调
});
},
// 初始化最近会话的消息未读数
initUnreadMsgCount() {
let that = this;
var sess;
var sessMap = webim.webim.MsgStore.sessMap();
for (var i in sessMap) {
sess = sessMap[i];
console.log(sess);
// if (selToID && selToID != sess.id()) { // 更新其他聊天对象的未读消息数
console.log('sess.unread()', sess.unread());
});
// this.pe(), sess.id(), sess.unread());
// }
}
},
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论