//发送消息(文本或者表情) function onSendMsg() { if (!selToID) { alert("你还没有选中好友或者群组,暂不能聊天"); $("#send_msg_text").val(''); return; } //获取消息内容 var msgContent = document.getElementsByClassName("msgedit")[0].value; var msgLen = webim.Tool.getStrBytes(msgContent); if (msgContent.length < 1) { alert("发送的消息不能为空!"); $("#send_msg_text").val(''); return; } var maxLen, errInfo; if (selType == webim.SESSION_TYPE.C2C) { maxLen = webim.MSG_MAX_LENGTH.C2C; errInfo = "消息长度超出限制(最多" + Math.round(maxLen / 3) + "汉字)"; } else { maxLen = webim.MSG_MAX_LENGTH.GROUP; errInfo = "消息长度超出限制(最多" + Math.round(maxLen / 3) + "汉字)"; } if (msgLen > maxLen) { alert(errInfo); return; } //发消息处理 handleMsgSend(msgContent); } function handleMsgSend(msgContent) { if (!selSess) { var selSess = new webim.Session(selType, selToID, selToID, friendHeadUrl, Math.round(new Date().getTime() / 1000)); } var isSend = true; //是否为自己发送 var seq = -1; //消息序列,-1表示sdk自动生成,用于去重 var random = Math.round(Math.random() * 4294967296); //消息随机数,用于去重 var msgTime = Math.round(new Date().getTime() / 1000); //消息时间戳 var subType; //消息子类型 if (selType == webim.SESSION_TYPE.C2C) { subType = webim.C2C_MSG_SUB_TYPE.COMMON; } else { //webim.GROUP_MSG_SUB_TYPE.COMMON-普通消息, //webim.GROUP_MSG_SUB_TYPE.LOVEMSG-点赞消息,优先级最低 //webim.GROUP_MSG_SUB_TYPE.TIP-提示消息(不支持发送,用于区分群消息子类型), //webim.GROUP_MSG_SUB_TYPE.REDPACKET-红包消息,优先级最高 subType = webim.GROUP_MSG_SUB_TYPE.COMMON; } var msg = new webim.Msg(selSess, isSend, seq, random, msgTime, loginInfo.identifier, subType, loginInfo.identifierNick); var text_obj, face_obj, tmsg, emotionIndex, emotion, restMsgIndex; //解析文本和表情 var expr = /\[[^[\]]{1,3}\]/mg; var emotions = msgContent.match(expr); if (!emotions || emotions.length < 1) { text_obj = new webim.Msg.Elem.Text(msgContent); msg.addText(text_obj); } else { for (var i = 0; i < emotions.length; i++) { tmsg = msgContent.substring(0, msgContent.indexOf(emotions[i])); if (tmsg) { text_obj = new webim.Msg.Elem.Text(tmsg); msg.addText(text_obj); } emotionIndex = webim.EmotionDataIndexs[emotions[i]]; emotion = webim.Emotions[emotionIndex]; if (emotion) { face_obj = new webim.Msg.Elem.Face(emotionIndex, emotions[i]); msg.addFace(face_obj); } else { text_obj = new webim.Msg.Elem.Text(emotions[i]); msg.addText(text_obj); } restMsgIndex = msgContent.indexOf(emotions[i]) + emotions[i].length; msgContent = msgContent.substring(restMsgIndex); } if (msgContent) { text_obj = new webim.Msg.Elem.Text(msgContent); msg.addText(text_obj); } } msg.PushInfo = { "PushFlag": 0, "Desc": '测试离线推送内容', //离线推送内容 "Ext": '测试离线推送透传内容', //离线推送透传内容 "AndroidInfo": { "Sound": "android.mp3" //离线推送声音文件路径。 }, "ApnsInfo": { "Sound": "apns.mp3", //离线推送声音文件路径。 "BadgeMode": 1 } }; msg.PushInfoBoolean = true; //是否开启离线推送push同步 msg.sending = 1; msg.originContent = msgContent; addMsg(msg); $("#send_msg_text").val(''); turnoffFaces_box(); webim.sendMsg(msg, function(resp) { //发送成功,把sending清理 $("#id_" + msg.random).find(".spinner").remove(); webim.Tool.setCookie("tmpmsg_" + selToID, '', 0); }, function(err) { //alert(err.ErrorInfo); //提示重发 showReSend(msg); }); } function showReSend(msg) { //resend a dom var resendBtn = $('重发'); //绑定重发事件 resendBtn.click(function() { //删除当前的dom $("#id_" + msg.random).remove(); //发消息处理 handleMsgSend(msg.originContent); }); $("#id_" + msg.random).find(".spinner").empty().append(resendBtn); } //发送文本框按下键盘事件 function onTextareaKeyDown(event) { if (event && event.keyCode == 13) { onSendMsg(); } } //关闭聊天界面 function onClose() { document.getElementById("webim_demo").style.display = "none"; //离线 webim.logout(); } //打开表情窗体 var showEmotionDialog = function() { if (emotionFlag) { $('#wl_faces_box').css({ "display": "block" }); return; } emotionFlag = true; for (var index in webim.Emotions) { var emotions = $('').attr({ "id": webim.Emotions[index][0], "src": webim.Emotions[index][1], "style": "cursor:pointer;" }).click(function() { selectEmotionImg(this); }); $('
  • ').append(emotions).appendTo($('#emotionUL')); } $('#wl_faces_box').css({ "display": "block" }); }; //表情选择div的关闭方法 var turnoffFaces_box = function() { $("#wl_faces_box").fadeOut("slow"); }; //选中表情 var selectEmotionImg = function(selImg) { var txt = document.getElementsByClassName("msgedit")[0]; txt.value = txt.value + selImg.id; txt.focus(); };