//监听新消息事件
|
var msgList = [];
|
var dateStart = null;
|
var dateEnd = null;
|
//newMsgList 为新消息数组,结构为[Msg]
|
function onMsgNotify(newMsgList) {
|
//console.warn(newMsgList);
|
var sess, newMsg;
|
//获取所有聊天会话
|
var sessMap = webim.MsgStore.sessMap();
|
|
for (var j in newMsgList) { //遍历新消息
|
newMsg = newMsgList[j];
|
|
if (!selToID) { //没有聊天对象
|
selToID = newMsg.getSession().id();
|
selType = newMsg.getSession().type();
|
selSess = newMsg.getSession();
|
var headUrl;
|
if (selType == webim.SESSION_TYPE.C2C) {
|
headUrl = friendHeadUrl;
|
} else {
|
headUrl = groupHeadUrl;
|
}
|
addSess(selType, selToID, newMsg.getSession().name(), headUrl, 0, 'sesslist'); //新增一个对象
|
setSelSessStyleOn(selToID);
|
}
|
if (newMsg.getSession().id() == selToID) { //为当前聊天对象的消息
|
//在聊天窗体中新增一条消息
|
//console.warn(newMsg);
|
addMsg(newMsg);
|
}
|
msgList.push(newMsg.elems[0].content.text);
|
}
|
//消息已读上报,以及设置会话自动已读标记
|
// webim.setAutoRead(selSess, true, true);
|
|
for (var i in sessMap) {
|
sess = sessMap[i];
|
if (selToID != sess.id()) { //更新其他聊天对象的未读消息数
|
if (!dateStart) {
|
dateStart = new Date();
|
}
|
updateSessDiv(sess.type(), sess.id(), sess.name(), sess.unread());
|
console.debug(sess.id(), sess.unread());
|
dateEnd = new Date();
|
}
|
}
|
}
|
|
//监听直播聊天室新消息事件
|
//newMsgList 为新消息数组,结构为[Msg]
|
//监听大群新消息(普通,点赞,提示,红包)
|
function onBigGroupMsgNotify(newMsgList) {
|
var newMsg;
|
for (var i = newMsgList.length - 1; i >= 0; i--) { //遍历消息,按照时间从后往前
|
newMsg = newMsgList[i];
|
webim.Log.warn('receive a new group(AVChatRoom) msg: ' + newMsg.getFromAccountNick());
|
//显示收到的消息
|
addMsg(newMsg);
|
}
|
}
|
|
|
//消息已读通知
|
function onMsgReadedNotify(notify) {
|
var sessMap = webim.MsgStore.sessMap()[webim.SESSION_TYPE.C2C + notify.From_Account];
|
if (sessMap) {
|
var msgs = _.clone(sessMap.msgs());
|
var rm_msgs = _.remove(msgs, function (m) {
|
return m.time <= notify.LastReadTime
|
});
|
var unread = sessMap.unread() - rm_msgs.length;
|
unread = unread > 0 ? unread : 0;
|
//更新sess的未读数
|
sessMap.unread(unread);
|
// console.debug('更新C2C未读数:',notify.From_Account,unread);
|
//更新页面的未读数角标
|
|
if (unread > 0) {
|
$("#badgeDiv_" + notify.From_Account).text(unread).show();
|
} else {
|
$("#badgeDiv_" + notify.From_Account).val("").hide();
|
}
|
}
|
}
|