var new_interval = 1;//消息提醒计时 var connect = 0;//连接状态 var new_msg = 0;//新消息数 var obj = {}; var chat_log = {}; var connect_list = {}; var connect_n = 0; var web_info = new Array();//页面信息 var friend_list = new Array();//我的好友 var follow_list = new Array();//我关注的人 var recent_list = new Array();//最近联系人 var user_list = new Array();//所有会员信息 var msg_list = new Array();//收到消息 var goods_list = new Array();//所有商品信息 var store_goods = new Array();//店铺推荐的商品 var dialog_show = 0;//对话框是否打开 var user_show = 0;//当前选择的会员 var msg_max = 20;//消息数 var chat_audio = 1;//消息提醒声音开关 var audio_info = '' + '' + ''; $(function () { if (user['u_id'] != '') { web_info['chat_goods_html'] = ''; web_info['html_title'] = $(document).attr('title'); web_info['msg_dialog'] = '
' + '
' + '
' + '
' + '输入聊天信息聊天记录
' + '
' + '
' + '
' + '
'; var chat_user_list = '

' + user['u_name'] + '

' + '
' + '我的好友
' + '
我关注的人
' + '
最近联系人
' + '' + '
'; var ajaxurl = HOMESITEURL + '/MemberInstantMessage/get_user_list?n=99&f_id=' + user['u_id']; $.ajax({ type: "GET", url: ajaxurl, dataType: "json", async: true, success: function (res) { if (res.code != 10000) { return false; } var u_list = res.result.user_list for (var i in u_list) { var user_info = u_list[i]; var u_id = user_info['u_id'] connect_list[u_id] = 0; connect_n++; set_user_info(u_id, "u_name", user_info['u_name']); set_user_info(u_id, "avatar", user_info['avatar']); if (user_info['friend'] == 1) friend_list[u_id] = user_info; if (user_info['follow'] == 1) follow_list[u_id] = user_info; if (user_info['recent'] == 1) recent_list[u_id] = user_info; } setTimeout("getconnect()", 1000); $("#web_chat_dialog").prepend(chat_user_list); $('#chat_user_list').perfectScrollbar(); $("#chat_show_user").click(function () { chat_show_list(); }); } }); } else { var n = send_state(); if (n > 0) setTimeout("getconnect()", 2000); $("#chat_show_user").click(function () { $('div[dstype="a-barLoginBox"]').trigger("click"); }); } }); $("#web_chat_dialog").after(audio_info); function msg_dialog_close(id) { if (dialog_show == 1) { $("#" + id).hide("slide", {direction: 'right'}, 300); } dialog_show = 0; close_chat_log(user_show); if (connect === 1) { $("#web_chat_dialog").show(); } } function msg_dialog_show(id) { if (dialog_show == 0) { $("#" + id).show("slide", {direction: 'right'}, 600, function () { $("#send_message").focus(); var obj_msg = obj.find("div[select_user_msg='" + user_show + "']"); obj.find("#msg_list").scrollTop(obj_msg.height()); }); } else { $("#send_message").focus(); } dialog_show = 1; if ($("#msg_count").html() == '') { $("#send_message").charCount({//输入字数控制 allowed: 255, warning: 10, counterContainerID: 'msg_count', firstCounterText: '还可以输入', endCounterText: '字', errorCounterText: '已经超出' }); $("#chat_show_smilies").smilies({smilies_id: "send_message"}); } } function send_state() { //向服务器请求页面中的相关会员的在线状态 var u_list = connect_list; var n = connect_n; switch (controller_act) { case "brand_list": case "search_index": $(".list_pic em[member_id]").each(function () { n++; var u_id = $(this).attr("member_id"); if (u_id > 0 && u_id != user['u_id']) u_list[u_id] = 0; }); break; default: $("[member_id]").each(function () { n++; var u_id = $(this).attr("member_id"); if (u_id > 0 && u_id != user['u_id']) u_list[u_id] = 0; }); break; } $('[dstype="mcard"]').each(function () { var data_str = $(this).attr('data-param'); eval('var mcard_obj = ' + data_str); var u_id = mcard_obj["id"]; if (u_id > 0 && u_id != user['u_id']) { n++; u_list[u_id] = 0; } }); if (connect === 1) { if (n > 0) { var u_ids = Object.keys(u_list) ws.send('get_state:' + u_ids.join(',')) } else { if (user['u_id'] == '') { ws.close(); } } } else { return n; } } function get_state(list) {//返回会员的状态并在页面显示 var u_list = list['u_state']; //店铺页面 唤起对话框 if (layout == 'store' || controller_act == 'Goods_index') { var store_id = 0; var store_name = ''; $("[member_id]").each(function () { var u_id = $(this).attr("member_id"); if (store_id > 0) { set_user_info(u_id, "s_id", store_id); set_user_info(u_id, "s_name", store_name); } set_user_info(u_id, "online", u_list[u_id]); if ($(this).find(".chat").size() == 0) { $(this).prepend(get_chat(u_id, u_list[u_id])); if ($(this).attr("c_name")) {//店铺客服 var c_name = $(this).attr("c_name"); set_user_info(u_id, "c_name", c_name); $(this).find(".chat").attr("href", "JavaScript:store_chat(" + u_id + ",'" + c_name + "');"); } } }); } else { switch (controller_act) { case "brand_list": case "search_index": $(".list_pic em[member_id]").each(function () { var u_id = $(this).attr("member_id"); if ($(this).find(".chat").size() == 0) { $(this).prepend(get_chat(u_id, u_list[u_id])); $(this).after("

在线客服

"); } set_user_info(u_id, "online", u_list[u_id]); }); break; default: $("[member_id]").each(function () { var u_id = $(this).attr("member_id"); if ($(this).find(".chat").size() == 0) { $(this).prepend(get_chat(u_id, u_list[u_id])); } set_user_info(u_id, "online", u_list[u_id]); }); break; } } if (user['u_id'] != '') { update_recent(u_list); update_friends(u_list); update_follow(u_list); } else { ws.close(); } } function show_obj() {//弹出框 if (user_show < 1) { chat_show_list(); return false; } msg_dialog_show('new_msg_dialog'); } function send_focus() { $("#send_alert").html(''); } function send_keyup(event) {//回车发消息 var t_msg = $.trim($("#send_message").val()); if (event.keyCode == 13 && t_msg.length > 0) { send_msg(); } } function send_msg(type=0,goods_id=0) {//发消息 if (user_show < 1) { $("#send_alert").html('未选择聊天会员'); return false; } var msg = {}; msg['to_id'] = user_show; if(type==0){ msg['message'] = $.trim($("#send_message").val()); msg['message_type'] = 0 if (msg['message'].length < 1) { $("#send_alert").html('发送内容不能为空'); return false; } if (msg['message'].length > 255) { $("#send_alert").html('一次最多只能发送255字'); return false; } }else{ if(goods_id > 0){ msg['message'] = goods_id }else{ msg['message'] = chat_goods_id } msg['message_type'] = 1 } if (connect < 1) { $("#send_alert").html('处于离线状态,稍后再试'); return false; } $.ajax({ type: "POST", url: HOMESITEURL + '/MemberInstantMessage/add', dataType: "json", data: msg, async: false, success: function (res) { if (res['code'] != 10000) { $("#send_alert").html('' + res['message']); return false; } else { var t_msg = res.result.instant_message_data if (connect === 1) { $("#send_message").val(''); $("#send_message").focus(); $("#send_alert").html(''); show_t_msg(t_msg); return true; } else { $("#send_alert").html('由于网络原因未发送成功,稍后再试'); return false; } } } }); } function get_msg(list) {//接收消息 var msg = {}; for (var k in list) { msg = list[k]; var m_id = msg['instant_message_id']; var u_id = msg['instant_message_from_id']; set_user(u_id, msg['instant_message_from_name']); if (typeof msg_list[u_id][m_id] === "object") {//防止重复计数 continue; } if (typeof msg['user'] === "object" && typeof msg['user']['avatar'] !== "undefined") { var user_info = msg['user']; var u_name = user_info['u_name']; set_user_info(u_id, "u_name", u_name); set_user_info(u_id, "s_id", user_info['s_id']); set_user_info(u_id, "s_name", user_info['s_name']); set_user_info(u_id, "avatar", user_info['avatar']); set_user_info(u_id, "s_avatar", user_info['s_avatar']); if (user_info['online'] > 0) set_user_info(u_id, "online", 1); } if (typeof user_list[u_id]['avatar'] === "undefined") {//当没获得会员信息时调用一次 var ajaxurl = HOMESITEURL + '/MemberInstantMessage/get_info?t=member&u_id=' + u_id; $.ajax({ type: "GET", url: ajaxurl, dataType: "json", async: false, success: function (res) { if (res.code != 10000) { return false } var member = res.result.user_info var u_name = member['member_name']; set_user_info(u_id, "s_id", member['store_id']); set_user_info(u_id, "s_name", member['store_name']); set_user_info(u_id, "avatar", member['member_avatar']); set_user_info(u_id, "s_avatar", member['store_avatar']); } }); } msg_list[u_id][m_id] = msg; if (dialog_show == 0 || obj.find("li[select_u_id='" + u_id + "']").size() == 0) {//没有打开对话窗口时计数 user_list[u_id]['new_msg']++; new_msg++; } else { if (user_show == u_id) { show_msg(u_id);//当前对话的会员消息设为已读 play_audio(); } else { user_list[u_id]['new_msg']++; new_msg++; } } alert_user_msg(u_id); } alert_msg(); } function get_chat_log(time_from) { var obj_chat_log = $("#dialog_chat_log"); if (obj_chat_log.html() == '') { var chat_log_list = '

聊天记录

' + '
' + '7天15天30天
' + '

已到第一页

已到最后一页

' + '
'; obj_chat_log.append(chat_log_list); } obj_chat_log.show(); chat_log['u_id'] = user_show; chat_log['now_page'] = 0; chat_log['total_page'] = 0; chat_log['time_from'] = 7; chat_log['list'] = new Array(); var time_id = obj_chat_log.find("span.current").attr("time_id"); if (time_from != time_id) { obj_chat_log.find("span.current").removeClass("current"); obj_chat_log.find("span[time_id='" + time_from + "']").addClass("current"); chat_log['time_from'] = time_from; } get_chat_msg(false); } function get_chat_next() { var now_page = chat_log['now_page'] - 1; if (now_page >= 1) { show_chat_msg(now_page); chat_log['now_page'] = now_page; } else { $('.chat_log_last').show(); setTimeout("$('.chat_log_last').hide()", 2000); } } function get_chat_previous() { var now_page = chat_log['now_page'] + 1; if (chat_log['total_page'] >= now_page) { if (typeof chat_log['list'][now_page] === "undefined") { get_chat_msg(false); } else { show_chat_msg(now_page); chat_log['now_page'] = now_page; if (chat_log['total_page'] > now_page && typeof chat_log['list'][now_page + 1] === "undefined") get_chat_msg(true); } } else { $('.chat_log_first').show(); setTimeout("$('.chat_log_first').hide()", 2000); } } function get_chat_msg(t) { var ajaxurl = HOMESITEURL + '/MemberInstantMessage/get_chat_log.html?f_id=' + user['u_id'] + '&t_id=' + chat_log['u_id'] + '&t=' + chat_log['time_from']; if (chat_log['now_page'] > 0) ajaxurl += '&page=' + (chat_log['now_page'] + 1); $.ajax({ type: "GET", url: ajaxurl, dataType: "json", async: t, success: function (res) { if (res.code != 10000) { return false } var chat_msg = res.result var now_page = chat_log['now_page'] + 1; chat_log['list'][now_page] = chat_msg['instant_message_list']; if (t == false) { chat_log['now_page'] = now_page; show_chat_msg(now_page); } chat_log['total_page'] = chat_msg['total_page']; if (chat_log['total_page'] > 1 && chat_log['total_page'] > now_page && t == false) { get_chat_msg(true); } } }); } function get_goods_list(s_id) { if (typeof store_goods[s_id] !== "undefined") { $("#chat_goods_list").html(store_goods[s_id]); $("#chat_goods_list").show(); return; } var ajaxurl = HOMESITEURL + '/MemberInstantMessage/get_goods_list?s_id=' + s_id; $.ajax({ type: "GET", url: ajaxurl, dataType: "json", async: true, success: function (res) { if (res.code != 10000) { return false } var list = res.result.goods_list var text_append = '
店铺推荐
'; store_goods[s_id] = text_append; get_goods_list(s_id); } }); } function update_msg(u_id) {//更新已读 var u_name = user_list[u_id]['u_name']; user_list[u_id]['new_msg'] = 0; alert_user_msg(u_id); new_msg--; alert_msg(); } //店铺客服对话窗口 function store_chat(u_id, c_name) { set_user_info(u_id, "c_name", c_name);//设置客服别名 chat(u_id); } //打开对话窗口 function chat(u_id) { if (user['u_id'] == '') {//未登录时弹出登录窗口 login_dialog(); return; } if (u_id == user['u_id']) return; if (1 || typeof user_list[u_id] === "undefined" || typeof user_list[u_id]['avatar'] === "undefined") { var ajaxurl = HOMESITEURL + '/MemberInstantMessage/get_info.html?t=member&u_id=' + u_id; $.ajax({ type: "GET", url: ajaxurl, dataType: "json", async: false, success: function (res) { if (res.code != 10000) { return false } var member = res.result.user_info var u_name = member['member_name']; if (typeof u_name === "undefined" || u_name == '') return false; set_user_info(u_id, "u_name", u_name); set_user_info(u_id, "s_id", member['store_id']); set_user_info(u_id, "s_name", member['store_name']); set_user_info(u_id, "avatar", member['member_avatar']); set_user_info(u_id, "s_avatar", member['store_avatar']); } }); } update_user(u_id); show_msg(u_id); show_obj(); } //显示窗口 function show_dialog() { update_dialog(); show_obj(); } //显示会员的对话 function update_dialog() { if (new_msg < 1) return true; var select_user = 0; for (var u_id in user_list) { if (user_list[u_id]['new_msg'] > 0) { update_user(u_id); obj.find("em[unread_id='" + u_id + "']").addClass("unread"); obj.find("em[unread_id='" + u_id + "']").html(user_list[u_id]['new_msg']); } } select_user = obj.find(".unread").first().attr("unread_id"); if (select_user > 0) show_msg(select_user); } function show_chat_log() { if (user_show < 1) { $("#send_alert").html('未选择聊天会员'); return false; } if (typeof chat_log['u_id'] === "undefined" || chat_log['u_id'] != user_show) { // $("#web_chat_dialog").hide(); obj.find(".chat-log-btn").removeClass("off"); obj.find(".chat-log-btn").addClass("on"); get_chat_log(7); } else { close_chat_log(user_show); } } //显示会员的消息 function show_msg(u_id) { var user_info = user_list[u_id]; var u_name = user_info['u_name']; if (obj.find("div[select_user_msg='" + u_id + "']").size() == 0) { obj.find("#user_msg_list").prepend('
'); } obj.find(".msg_list").hide(); obj.find("div[select_user_msg='" + u_id + "']").show(); obj.find("li[select_u_id]").removeClass("select_user"); obj.find("li[select_u_id='" + u_id + "']").addClass("select_user"); if (user_show != u_id) { close_chat_log(user_show); $("#chat_user_avatar").attr("src", user_info['avatar']); $("#chat_goods_list").hide(); var add_html = ''; var store_html = ''; if (typeof user_info['c_name'] !== "undefined") add_html = '--' + user_info['c_name']; if (typeof user_info['s_name'] !== "undefined" && user_info['s_name'] !== "") { get_goods_list(user_info['s_id']);//异步调用店铺推荐的商品 $("#chat_user_avatar").attr("src", user_info['s_avatar']); store_html = '' + user_info['s_name'] + ''; u_name = '客服:' + u_name; } var online_html = ''; if (user_info['online'] > 0) { online_html = ''; } $("#chat_user_name").html(u_name + add_html + online_html); $("#chat_user_store").html(store_html); obj.find('#msg_list').perfectScrollbar('destroy'); obj.find('#msg_list').perfectScrollbar(); } user_show = u_id; var max_id = 0; for (var m_id in msg_list[u_id]) { if (obj.find("div[m_id='" + m_id + "']").size() == 0) { var msg = msg_list[u_id][m_id]; show_f_msg(msg); update_msg(u_id); delete msg_list[u_id][m_id];//删除消息 if (m_id > max_id) max_id = m_id; } } if(max_id){ //将消息设置为已读 $.getJSON(HOMESITEURL + '/MemberInstantMessage/set_message',{max_id:max_id,f_id:u_id}) } var obj_msg = obj.find("div[select_user_msg='" + u_id + "']"); obj.find("#msg_list").scrollTop(obj_msg.height()); $("#send_message").focus(); } //显示收到的消息 function show_f_msg(msg) { var u_id = msg['instant_message_from_id']; var user_info = user_list[u_id]; var text_append = ''; var obj_msg = obj.find("div[select_user_msg='" + u_id + "']"); text_append += '
'; text_append += ''; text_append += '
'; text_append += timetrans(msg['instant_message_add_time']) + '
'; text_append += '
'; text_append += update_chat_msg(msg) + '
'; text_append += '
'; text_append += '
'; obj_msg.append(text_append); var n = obj_msg.find("div[m_id]").size(); if (n >= msg_max && n % msg_max == 1) { obj_msg.append('
清除已上历史消息
'); } obj.find("#msg_list").scrollTop(obj_msg.height()); } function show_t_msg(msg) {//显示发出的消息 var user_info = user; var u_id = msg['instant_message_to_id']; var text_append = ''; var obj_msg = obj.find("div[select_user_msg='" + u_id + "']"); text_append += '
'; text_append += ''; text_append += '
'; text_append += timetrans(msg['instant_message_add_time']) + '
'; text_append += '
'; text_append += update_chat_msg(msg) + '
'; text_append += '
'; text_append += '
'; obj_msg.append(text_append); var n = obj_msg.find("div[m_id]").size(); if (n >= msg_max && n % msg_max == 1) { obj_msg.append('
清除已上历史消息
'); } obj.find("#msg_list").scrollTop(obj_msg.height()); } function show_chat_msg(now_page) { var log_list = chat_log['list'][now_page]; $('#chat_log_msg').html(''); for (var k in log_list) { var class_html = ''; var text_append = ''; var msg = log_list[k]; msg['u_name'] = msg['instant_message_from_name']; if (msg['instant_message_from_id'] == user['u_id']) { msg['u_name'] = '我'; class_html = 'chat_user'; } text_append += '
'; text_append += '

' + msg['u_name'] + ''; text_append += '' + timetrans(msg['instant_message_add_time']) + '

'; text_append += '

' + update_chat_msg(msg) + '

'; text_append += '
'; $('#chat_log_msg').prepend(text_append); } $('#chat_log_list').perfectScrollbar('destroy'); $('#chat_log_list').perfectScrollbar(); $('#chat_log_list').scrollTop($('#chat_log_msg').height()); } function chat_show_user_list(chat_show) { var obj_chat = $("#chat_user_" + chat_show); if (obj_chat.find("dt span").attr("class") == 'hide') { obj_chat.find("dd[u_id]").show(); obj_chat.find("dt span").attr("class", "show"); } else { obj_chat.find("dd[u_id]").hide(); obj_chat.find("dt span").attr("class", "hide"); } } function chat_show_list() { if (user['u_id'] == '') { return; } var obj_chat = $(".chat-list"); if (new_msg > 0 || obj_chat.css("display") == 'none') { obj_chat.show("slide", {direction: 'right'}, 300); } else { obj_chat.hide("slide", {direction: 'right'}, 300); } } function del_msg(msg) {//已读消息处理 var max_id = msg['max_id'];//最大的消息编号 var u_id = msg['f_id'];//消息发送人 for (var m_id in msg_list[u_id]) { if (max_id >= m_id) { delete msg_list[u_id][m_id]; if (user_list[u_id]['new_msg'] > 0) user_list[u_id]['new_msg']--; if (new_msg > 0) new_msg--; alert_user_msg(u_id); } } alert_msg(); } function alert_user_msg(u_id) { if (user_list[u_id]['new_msg'] > 0) { obj.find("em[unread_id='" + u_id + "']").addClass("unread"); obj.find("em[unread_id='" + u_id + "']").html(user_list[u_id]['new_msg']); $("#chat_user_recent dd[u_id='" + u_id + "'] a").addClass("msg"); } else { obj.find("em[unread_id='" + u_id + "']").html(""); obj.find("em[unread_id='" + u_id + "']").removeClass("unread"); $("#chat_user_recent dd[u_id='" + u_id + "'] a").removeClass("msg"); } } function alert_msg() { var new_n = 0; clearInterval(new_interval); if (new_msg > 0) {//消息提醒 new_interval = setInterval(function () { new_n++; if (connect === 1) $(document).attr('title', '新消息(' + new_msg + ') ' + web_info['html_title']); if (new_n % 3 > 1) $(document).attr('title', web_info['html_title']); }, 500); $("#new_msg").show().html(new_msg); play_audio(); } else { new_msg = 0; $("#new_msg").hide().html(''); } $(document).attr('title', web_info['html_title']); } function get_chat(u_id, online) {//显示链接地址 var add_html = '在线'; if (u_id != user['u_id'] && u_id > 0) { var class_html = 'chat_offline'; var text_html = '离线'; if (online > 0) { class_html = 'chat_online'; text_html = '在线'; } add_html = '' + text_html + ''; } return add_html; } function clear_msg(u_id, m_id) {//清除消息处理 var obj_msg = obj.find("div[select_user_msg='" + u_id + "']"); obj_msg.find("div[clear_id='" + m_id + "']").prevAll().remove(); obj_msg.find("div[clear_id='" + m_id + "']").remove(); } function play_audio() {//提示声音 if (chat_audio === 1) { var swf = document["msg_audio"]; if (typeof swf.pplay === "function") { swf.load(CHAT_SITE_URL + '/msg.mp3'); swf.pplay(); } } } function set_user(u_id, u_name) {//初始化会员信息 var user_info = new Array(); user_info['u_id'] = u_id; user_info['u_name'] = u_name; user_info['new_msg'] = 0; user_info['online'] = 0; if (typeof user_list[u_id] === "undefined") { user_list[u_id] = user_info; } if (typeof msg_list[u_id] === "undefined") { msg_list[u_id] = new Array(); } } function set_user_info(u_id, k, v) {//设置会员信息 if (typeof user_list[u_id] === "undefined") { set_user(u_id, ''); } user_list[u_id][k] = v; } function close_chat_log(u_id) { if (user_show == 0 || chat_log['u_id'] == u_id) { chat_log = {}; $("#dialog_chat_log").hide(); $('#chat_log_msg').html(''); obj.find(".chat-log-btn").removeClass("on"); obj.find(".chat-log-btn").addClass("off"); if (connect === 1) $("#web_chat_dialog").show(); } } function close_dialog(u_id) { obj.find("li[select_u_id='" + u_id + "']").remove(); obj.find("div[select_user_msg='" + u_id + "']").hide(); if (obj.find("li[select_u_id]").size() == 0) { msg_dialog_close('new_msg_dialog'); } else { if (user_show == u_id) obj.find("li[select_u_id]").first().trigger("click"); } if (user_show == u_id) { user_show = 0; close_chat_log(u_id); } if (obj.find("li[select_u_id]").size() < 2) { obj.find(".user-tab-bar").hide(); $("#new_msg_dialog").css('width', '742px') } } function update_chat_msg(res) { if (res['instant_message_type'] == 1) { var chat_goods = res['instant_message'] var msg = '
' + chat_goods.goods_name + '
¥' + chat_goods.goods_price + "
"; } else { var msg=res['instant_message'] if (typeof smilies_array !== "undefined") { msg = '' + msg; for (var i in smilies_array[1]) { var s = smilies_array[1][i]; var re = new RegExp("" + s[1], "g"); var smilieimg = '' + s[6] + ''; msg = msg.replace(re, smilieimg); } } } return msg; } function update_friends(u_list) { var obj_friend = $("#chat_friends"); for (var u_id in friend_list) { set_user_info(u_id, "online", u_list[u_id]); if (obj_friend.parent().find("dd[u_id='" + u_id + "']").size() == 0) { if (user_list[u_id]['online'] > 0) { obj_friend.before('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } else { obj_friend.after('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } } } obj_friend.remove(); chat_show_user_list('friends'); } function update_follow(u_list) { var obj_follow = $("#chat_follow"); for (var u_id in follow_list) { set_user_info(u_id, "online", u_list[u_id]); if (obj_follow.parent().find("dd[u_id='" + u_id + "']").size() == 0) { if (user_list[u_id]['online'] > 0) { obj_follow.before('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } else { obj_follow.after('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } } } obj_follow.remove(); chat_show_user_list('follow'); } function update_recent(u_list) { var obj_recent = $("#chat_recent"); for (var u_id in recent_list) { set_user_info(u_id, "online", u_list[u_id]); if (obj_recent.parent().find("dd[u_id='" + u_id + "']").size() == 0) { if (user_list[u_id]['online'] > 0) { obj_recent.before('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } else { obj_recent.after('
' + user_list[u_id]['u_name']
                        + '
' + user_list[u_id]['u_name'] + '
'); } } } obj_recent.remove(); } function update_user(u_id) { if ($("#dialog_chat_right").html() == '') { var text_append = ' '; text_append += '
'; text_append += '
'; text_append += '
'; text_append += '
'; text_append += '
'; text_append += '
'; text_append += '
'; $("#dialog_chat_right").append(text_append + web_info['chat_goods_html']); } if (obj.find("li[select_u_id='" + u_id + "']").size() == 0) { var user_info = user_list[u_id]; var u_name = user_info['u_name']; var text_append = ''; var class_html = 'offline'; if (user_info['online'] > 0) class_html = 'online'; text_append += '
  • '; text_append += ''; text_append += '' + u_name + ''; text_append += ''; text_append += u_name + ''; text_append += ''; text_append += ''; text_append += '
  • '; obj.find("#user_list").append(text_append); obj.find("#user_list").sortable({items: 'li'}); obj.find("li[select_u_id='" + u_id + "'] .ac-ico").bind("click", function () { close_dialog(u_id); return false; }); if (obj.find("li[select_u_id]").size() > 1) { obj.find(".user-tab-bar").show(); $("#new_msg_dialog").css('width', '942px') } } obj.find(".user-tab-bar").perfectScrollbar(); } var ws var lockReconnect = false var timeOut = false function getconnect() { try { ws = new WebSocket(connect_url) init() } catch (e) { reconnect() } } function init() { ws.onopen = wsOpen ws.onmessage = wsMessage ws.onclose = wsClose ws.onerror = wsError } function reconnect() { if (lockReconnect) { return } lockReconnect = true // 没连接上会一直重连,设置延迟避免请求过多 timeOut && clearTimeout(timeOut) timeOut = setTimeout(function () { getconnect() lockReconnect = false }, 4000) } function wsOpen() { connect = 1 send_state(); if (user['u_id'] == '') return false;//未登录时不取消息 $("#web_chat_dialog").show(); if ($("#new_msg_dialog").size() == 0) { $("#web_chat_dialog").after(web_info['msg_dialog']); $("#new_msg_dialog").draggable({containment: "body"}); } obj = $("#new_msg_dialog"); // 心跳检测重置 heartCheck.start() } function wsMessage(res) { var message = JSON.parse(res.data) if (!message) { console.log(res) return } var type = message.type || '' switch (type) { // Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定 case 'init': var clientId = message.client_id //获取未读消息 $.getJSON(HOMESITEURL + '/MemberInstantMessage/join',{client_id:clientId}) break case 'leave': break case 'get_state'://用户状态 get_state(message) break case 'get_msg'://未读消息 get_msg(message.msg_list) break default: get_msg([message]) } heartCheck.start() } function wsClose(res) { connect = 0 console.log(res) $("#web_chat_dialog").hide(); reconnect() } function wsError(res) { console.log(res) reconnect() } // 心跳检测 var heartCheck = { timeout: 3000, timeoutObj: null, start: function () { var self = this this.timeoutObj && clearTimeout(this.timeoutObj) this.timeoutObj = setInterval(function () { // 这里发送一个心跳,后端收到后,返回一个心跳消息, ws.send('123456789') }, this.timeout) } } function timetrans(date) { var date = new Date(date * 1000);//如果date为13位不需要乘1000 var Y = date.getFullYear() + '-'; var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' '; var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); return Y + M + D + h + m + s; }