...
|
...
|
@@ -38,9 +38,10 @@ const msgTypeMap = { |
|
|
};
|
|
|
|
|
|
let userName = $('#js-uname').val();
|
|
|
let uid = $('#js-uid').val();
|
|
|
let encryptedUid = $('#js-eid').val();
|
|
|
let userAvatar = $('#js-avatar').val() || socketConf.defaultUserHead;
|
|
|
let uid = cmEntity.userId = $('#js-uid').val() || 0;
|
|
|
let encryptedUid = cmEntity.encryptedUid = $('#js-eid').val() || 0;
|
|
|
let userAvatar = cmEntity.userHead = $('#js-avatar').val() || socketConf.defaultUserHead;
|
|
|
|
|
|
|
|
|
// 客服配置
|
|
|
let customerService = {
|
...
|
...
|
@@ -64,7 +65,7 @@ var chat = { |
|
|
$chatWin: null,
|
|
|
$netTip: null,
|
|
|
|
|
|
msgArr: [],
|
|
|
unFinshMSGs: {}, // 没有发送出去消息
|
|
|
$ratingView: $('#chat-comment'),
|
|
|
|
|
|
|
...
|
...
|
@@ -125,8 +126,7 @@ var chat = { |
|
|
onMessage: function(event) {
|
|
|
let received = JSON.parse(event.data);
|
|
|
|
|
|
console.log('客户端接收到消息:');
|
|
|
console.log(received);
|
|
|
console.log('客户端接收到消息:', received);
|
|
|
|
|
|
// update 会话id
|
|
|
cmEntity.conversationId = received.newConversationId > 0 ?
|
...
|
...
|
@@ -235,6 +235,8 @@ var chat = { |
|
|
*
|
|
|
*/
|
|
|
sendMSG: function(msg, noDraw = false) {
|
|
|
const self = this;
|
|
|
|
|
|
if (!msg || !msg.data) {
|
|
|
return;
|
|
|
}
|
...
|
...
|
@@ -266,24 +268,76 @@ var chat = { |
|
|
cmEntity.chatMessage.type = 10;
|
|
|
cmEntity.chatMessage.content = arr;
|
|
|
break;
|
|
|
case 'picture':
|
|
|
cmEntity.chatMessage.content = data.content;
|
|
|
cmEntity.chatMessage.type = 2;
|
|
|
break;
|
|
|
case 'text':
|
|
|
default:
|
|
|
cmEntity.chatMessage.type = 1;
|
|
|
cmEntity.chatMessage.content = data.content;
|
|
|
}
|
|
|
|
|
|
if (!noDraw) {
|
|
|
let $msg = this._drawMSG(msg);
|
|
|
|
|
|
self.wrapMSG(cmEntity, $msg)
|
|
|
.trigger('send.sendEvent');
|
|
|
} else {
|
|
|
socket.send(JSON.stringify(cmEntity));
|
|
|
}
|
|
|
return this;
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 消息发送的生命周期
|
|
|
* 1. send Event
|
|
|
* 2. sucess Event
|
|
|
* 3. fail Event
|
|
|
* @param {object} cmEntity
|
|
|
* @param {jquery} $msg
|
|
|
* @param {function} sendAction
|
|
|
* @return $msg
|
|
|
*/
|
|
|
wrapMSG(cmEntity, $msg, sendAction) {
|
|
|
var self = this;
|
|
|
|
|
|
// TODO 时间
|
|
|
let uuid = cmEntity.uuid;
|
|
|
let msgStr = JSON.stringify(cmEntity);
|
|
|
|
|
|
!noDraw && this._drawMSG(msg);
|
|
|
this.unFinshMSGs[uuid] = $msg;
|
|
|
|
|
|
socket.send(JSON.stringify(cmEntity));
|
|
|
$msg.data('msg', msgStr);
|
|
|
|
|
|
return this;
|
|
|
$msg
|
|
|
.on('fail.sendEvent', function() {
|
|
|
$msg.removeClass('send-loading')
|
|
|
.addClass('send-fail')
|
|
|
.one('click', () => {
|
|
|
$msg.trigger('send.sendEvent');
|
|
|
});
|
|
|
})
|
|
|
.on('success.sendEvent', function() {
|
|
|
clearTimeout($msg.data('timeoutId'));
|
|
|
$msg.removeClass('send-loading send-fail')
|
|
|
.off('sendEvent')
|
|
|
.removeData();
|
|
|
|
|
|
})
|
|
|
.on('send.sendEvent', function() {
|
|
|
if (navigator.onLine) {
|
|
|
$msg.removeClass('send-fail')
|
|
|
.addClass('send-loading');
|
|
|
|
|
|
$msg.data('timeoutId', setTimeout(() => {
|
|
|
if (self.unFinshMSGs[uuid]) {
|
|
|
$msg.trigger('fail.sendEvent');
|
|
|
}
|
|
|
}, 5000));
|
|
|
|
|
|
socket.send($msg.data('msg'));
|
|
|
} else {
|
|
|
$msg.trigger('fail.sendEvent');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return $msg;
|
|
|
},
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -354,7 +408,14 @@ var chat = { |
|
|
var recType = rec.type,
|
|
|
chatMessage = rec.chatMessage,
|
|
|
msgType = chatMessage.type,
|
|
|
allTypes = socketConf.recType;
|
|
|
allTypes = socketConf.recType,
|
|
|
uuid = rec.uuid;
|
|
|
|
|
|
if (this.unFinshMSGs[uuid]) {
|
|
|
let $msg = this.unFinshMSGs[uuid];
|
|
|
|
|
|
$msg.trigger('success.sendEvent');
|
|
|
}
|
|
|
|
|
|
// var uuid = rec.uuid;
|
|
|
var viewData;
|
...
|
...
|
@@ -386,6 +447,15 @@ var chat = { |
|
|
}
|
|
|
break;
|
|
|
|
|
|
case allTypes.BREAK_TIME:
|
|
|
this._sysInfo(chatMessage.content);
|
|
|
break;
|
|
|
|
|
|
// 客服邀请评价
|
|
|
case allTypes.EVAL_INVITE:
|
|
|
this._sysInfo('<p data-trigger="rating">请对我们的服务进行<span class="blue">评价</span></p>');
|
|
|
break;
|
|
|
|
|
|
// 客服进入
|
|
|
case allTypes.CS_ENTER:
|
|
|
this.$chat.toggleClass('online', true);
|
...
|
...
|
|