huanxin.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. var conn = null;///创建连接
  2. conn = {};
  3. WebIM.config = config;
  4. conn = WebIM.conn = new WebIM.connection({
  5. appKey: WebIM.config.appkey,
  6. isHttpDNS: WebIM.config.isHttpDNS,
  7. url: WebIM.config.xmppURL,
  8. apiUrl: WebIM.config.apiURL,
  9. autoReconnectNumMax: WebIM.config.autoReconnectNumMax,
  10. delivery: WebIM.config.delivery,
  11. useOwnUploadFun: WebIM.config.useOwnUploadFun
  12. });
  13. //添加回调函数
  14. conn.listen({
  15. onOpened: function () {}, //连接成功回调
  16. onClosed: function () {}, //连接关闭回调
  17. onTextMessage: function (message) { //收到文本消息
  18. //判断发送消息者是否为新好友
  19. var userIDArray = new Array();
  20. $.each($(".left_el_scrollbar .chat__room-session-item"), (index, ele) => {
  21. userIDArray.push($(ele).attr("id") + ",");
  22. });
  23. userIDArray.push(username.toLowerCase() + ",");
  24. if(userIDArray.indexOf(message.from + ",") < 0){
  25. conn.fetchUserInfoById([message.from], ['nickname', 'avatarurl']).then((res) => {
  26. var userMap = {};
  27. $.each(res.data, (index, itemVal) => {
  28. userMap.nickname = itemVal.nickname;
  29. userMap.avatarurl = itemVal.avatarurl;
  30. });
  31. $(".left_el_scrollbar").append("<div id='"+ message.from +"' name='"+ userMap.nickname +"' onclick='clickMessage(this)' class=\"chat__room-session-item\"><img\n" +
  32. " src=\""+ userMap.avatarurl +"\"\n" +
  33. " alt=\""+ userMap.nickname +"头像\"><span class=\"chat__room-session-item-unread\"\n" +
  34. " style=\"display: none;\">0</span>\n" +
  35. " <div class=\"chat__room-user\"><p class=\"chat__room-user-title\"><span\n" +
  36. " title=\""+ userMap.nickname +"\">"+ userMap.nickname +"</span><span>"+ format(parseInt(message.time)).split("|")[1] +"</span></p>\n" +
  37. " <p title=\""+ message.data +"\">"+ message.data +"</p></div>\n" +
  38. " </div>");
  39. });
  40. }
  41. if(!clickMessageType){
  42. countSum++;
  43. $(".message_num").html(countSum);
  44. $(".message_num").show();
  45. }
  46. var userMap = {};
  47. if(message.from == userID){
  48. conn.fetchUserInfoById([message.from], ['nickname', 'avatarurl']).then((res) => {
  49. $.each(res.data, (index, itemVal) => {
  50. userMap.nickname = itemVal.nickname;
  51. userMap.avatarurl = itemVal.avatarurl;
  52. });
  53. $(".right_el_scrollbar").append("<div class=\"chat__room-message\"\n" +
  54. " cid=\""+ message.id +"\"><img\n" +
  55. " src=\""+ userMap.avatarurl +"\"\n" +
  56. " alt=\"avatar\" class=\"avatar\">\n" +
  57. " <div class=\"chat__room-message-text\">\n" +
  58. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  59. " <div class=\"chat__room-message-text-wrapper\"><p>"+ message.data +"</p>\n" +
  60. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  61. " </div>\n" +
  62. " <span>"+ formatNotss(parseInt(message.time)) +"</span></div><!----></div>")
  63. var height = $(".right_el_scrollbar")[0].scrollHeight;
  64. $(".chat__room-content-scroll .el-scrollbar__wrap").scrollTop(height);
  65. })
  66. }else{
  67. var numVal = $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").html();
  68. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").html(parseInt(numVal) + 1);
  69. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").show();
  70. }
  71. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-user-title").next().html(message.data);
  72. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-user-title").next().attr("title", message.data);
  73. $(".left_el_scrollbar div[id="+ message.from +"] .chat__room-user-title").find("span").eq(1).html(format(parseInt(message.time)).split("|")[1]);
  74. },
  75. onEmojiMessage: function ( message ) {}, //收到表情消息
  76. onPictureMessage: function ( message ) {
  77. //判断发送消息者是否为新好友
  78. var userIDArray = new Array();
  79. $.each($(".left_el_scrollbar .chat__room-session-item"), (index, ele) => {
  80. userIDArray.push($(ele).attr("id") + ",");
  81. });
  82. if(userIDArray.indexOf(message.from + ",") < 0){
  83. conn.fetchUserInfoById([message.from], ['nickname', 'avatarurl']).then((res) => {
  84. var userMap = {};
  85. $.each(res.data, (index, itemVal) => {
  86. userMap.nickname = itemVal.nickname;
  87. userMap.avatarurl = itemVal.avatarurl;
  88. });
  89. $(".left_el_scrollbar").append("<div id='"+ message.from +"' name='"+ userMap.nickname +"' onclick='clickMessage(this)' class=\"chat__room-session-item\"><img\n" +
  90. " src=\""+ userMap.avatarurl +"\"\n" +
  91. " alt=\""+ userMap.nickname +"头像\"><span class=\"chat__room-session-item-unread\"\n" +
  92. " style=\"display: none;\">0</span>\n" +
  93. " <div class=\"chat__room-user\"><p class=\"chat__room-user-title\"><span\n" +
  94. " title=\""+ userMap.nickname +"\">"+ userMap.nickname +"</span><span>"+ format(parseInt(message.time)).split("|")[1] +"</span></p>\n" +
  95. " <p title=\"[图片]\">[图片]</p></div>\n" +
  96. " </div>");
  97. })
  98. }
  99. if(!clickMessageType){
  100. countSum++;
  101. $(".message_num").html(countSum);
  102. }
  103. var userMap = {};
  104. if(message.from == userID){
  105. conn.fetchUserInfoById([message.from], ['nickname', 'avatarurl']).then((res) => {
  106. $.each(res.data, (index, itemVal) => {
  107. userMap.nickname = itemVal.nickname;
  108. userMap.avatarurl = itemVal.avatarurl;
  109. });
  110. $(".right_el_scrollbar").append("<div class=\"chat__room-message\"\n" +
  111. " cid=\""+ message.id +"\"><img\n" +
  112. " src=\""+ userMap.avatarurl +"\"\n" +
  113. " alt=\"avatar\" class=\"avatar\"><!---->\n" +
  114. " <div class=\"chat__room-message-img\">\n" +
  115. " <div class=\"el-image\"><img onclick='clickImg(this)' alt=\"fileImage\"\n" +
  116. " src=\""+ message.url +"\"\n" +
  117. " class=\"el-image__inner el-image__preview\"\n" +
  118. " style=\"object-fit: cover;\"><!--v-if--></div>\n" +
  119. " <span>"+ formatNotss(parseInt(message.time)) +"</span></div>\n" +
  120. " </div>")
  121. })
  122. }else{
  123. var numVal = $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").html();
  124. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").html(parseInt(numVal) + 1);
  125. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-session-item-unread").show();
  126. }
  127. var height = $(".right_el_scrollbar")[0].scrollHeight;
  128. $(".chat__room-content-scroll .el-scrollbar__wrap").scrollTop(height);
  129. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-user-title").next().html("[图片]");
  130. $(".left_el_scrollbar div[id="+ message.from +"]").find(".chat__room-user-title").next().attr("title", message.data);
  131. $(".left_el_scrollbar div[id="+ message.from +"] .chat__room-user-title").find("span").eq(1).html(format(parseInt(message.time)).split("|")[1]);
  132. }, //收到图片消息
  133. onCmdMessage: function ( message ) {}, //收到命令消息
  134. onAudioMessage: function ( message ) {}, //收到音频消息
  135. onLocationMessage: function ( message ) {},//收到位置消息
  136. onFileMessage: function ( message ) {}, //收到文件消息
  137. onCustomMessage: function ( message ) {}, //收到自定义消息
  138. onVideoMessage: function (message) {
  139. var node = document.getElementById('privateVideo');
  140. var option = {
  141. url: message.url,
  142. headers: {
  143. 'Accept': 'audio/mp4'
  144. },
  145. onFileDownloadComplete: function (response) {
  146. var objectURL = WebIM.utils.parseDownloadResponse.call(conn, response);
  147. node.src = objectURL;
  148. },
  149. onFileDownloadError: function () {
  150. console.log('File down load error.')
  151. }
  152. };
  153. WebIM.utils.download.call(conn, option);
  154. }, //收到视频消息
  155. onPresence: function ( message ) {}, //处理“广播”或“发布-订阅”消息,如联系人订阅请求、处理群组、聊天室被踢解散等消息
  156. onRoster: function ( message ) {}, //处理好友申请
  157. onInviteMessage: function ( message ) {}, //处理群组邀请
  158. onOnline: function () {}, //本机网络连接成功
  159. onOffline: function () {}, //本机网络掉线
  160. onError: function ( message ) {}, //失败回调
  161. onBlacklistUpdate: function (list) { //黑名单变动
  162. // 查询黑名单,将好友拉黑,将好友从黑名单移除都会回调这个函数,list则是黑名单现有的所有好友信息
  163. console.log(list);
  164. },
  165. onRecallMessage: function(message){}, //收到撤回消息回调
  166. onReceivedMessage: function(message){}, //收到消息送达服务器回执
  167. onDeliveredMessage: function(message){}, //收到消息送达客户端回执
  168. onReadMessage: function(message){}, //收到消息已读回执
  169. onCreateGroup: function(message){}, //创建群组成功回执(需调用createGroupNew)
  170. onMutedMessage: function(message){}, //如果用户在A群组被禁言,在A群发消息会走这个回调并且消息不会传递给群其它成员
  171. onChannelMessage: function(message){} //收到整个会话已读的回执,在对方发送channel ack时会在这个回调里收到消息
  172. });