var swoole_chat = { 'to_id': '', 'socket': '', init : function () { this.to_id = $('.user-chat-content .list ul .chatToId').val(); this.socket= new WebSocket('ws://120.79.164.57:8090?uid=' + send_id + '&to_id=' + this.to_id); this.initSocket(this.socket); this.sendMessage(this.socket); this.clickUser(this.socket); this.clickChat(this.socket); }, initScroll :function () { $('.user-chat-content .list ul').scrollTop($('.user-chat-content .list ul')[0].scrollHeight); $(window).scrollTop(0); }, initSocket:function (socket) { socket.onopen = function (event) { console.log(event); console.log('链接成功'); } socket.onmessage =function (event) { // console.log(event); var html = ''; var data = JSON.parse(event.data); if(data.messType == 1){ //初始化渲染数据 html += ''; for(var i=0; i< data.contentList.length; i++) { var name = data.contentList[i].send_id == send_id? '你说:' : data.to_id_info.nick ? data.to_id_info.nick : data.to_id_info.username; var head_img = data.contentList[i].send_id == data.send_id_info.id? main.htmlEncodeByRegExp(data.send_id_info.head_img) : main.htmlEncodeByRegExp(data.to_id_info.head_img); html += '
  • '; html += ''; html += '' + main.timestampToTime(data.contentList[i].create_time) + ''; html += ' '+main.nl2br(main.htmlEncodeByRegExp(name))+''; html += '

    ' + main.nl2br(main.htmlEncodeByRegExp(data.contentList[i].content))+ '

    '; html += '
  • '; } $('.user-chat-content .list ul').empty(); $('.user-chat-content .list ul').append(html); }else if(data.messType == 2){ //发送信息 var addMsg = ''; var addName = data.contentList.send_id == send_id? '你说:' : data.send_id_info.nick ? data.send_id_info.nick : data.send_id_info.username; var addImg = data.contentList.send_id == data.send_id_info.id? main.htmlEncodeByRegExp(data.send_id_info.head_img) : main.htmlEncodeByRegExp(data.to_id_info.head_img); addMsg += '
  • '; addMsg += ''; addMsg += '' + main.timestampToTime(data.contentList.create_time) + ''; addMsg += ' '+main.nl2br(main.htmlEncodeByRegExp(addName))+''; addMsg += '

    ' + main.nl2br(main.htmlEncodeByRegExp(data.contentList.content))+ '

    '; addMsg += '
  • '; $('.user-chat-content .list ul').append(addMsg); }else if(data.messType == -1){ main.showInfo(data.msg,2); return ; } $('.user-chat-content .list .send-message .message-send').val(''); swoole_chat.initScroll(); } socket.onerror =function(event){ console.log(event); console.log("链接失败"); } socket.onclose =function () { console.log('关闭聊天'); } }, //发送消息 sendMessage:function (socket){ $('.user-chat-content .list .send-message .message-btn').click(function () { var sendMessage = $(this).parent().find('.message-send').val(); if (!sendMessage) { main.showInfo('发送信息不能为空', 2); return; } if (!send_id) { main.showInfo('非法参数', 2); return; } if (!swoole_chat.to_id ) { main.showInfo('发送对象不存在', 2); return; } var pData = { "content": sendMessage, "fid": send_id, "tid": swoole_chat.to_id }; socket.send(JSON.stringify(pData)); //发送消息 }); }, /**用户匹配 * */ clickUser : function (socket) { $('.user-chat-content .chat-list .chat-list-info').click(function() { var userId = $(this).find('.userId').val(); $('.user-chat-content .list ul .chatToId').val(userId); userMain.initMatchUser(userId); var pData = { "content": '', "fid": send_id, "tid": userId, 'initType' :1 }; socket.send(JSON.stringify(pData)); //选择用户初始化消息 }); }, /** * 点击发送消息,进入到相应的聊天记录 */ clickChat : function(socket) { $('.user-friend-content .list ul li .chat').click(function(){ var userId = $(this).find('.chatId').val(); var userName = $(this).siblings('a').find('.nick').text(); var headImg = $(this).siblings('a').find('img').attr('src'); var ifMatchId = false; $('.user-content-box .main').eq(4).removeClass('hide').siblings(".user-content-box .main").addClass('hide'); $('.user-content-menu ul li').eq(4).addClass('active').siblings().removeClass('active'); //用户列表匹配 $('.user-chat-content .chat-list .chat-list-info').each(function(){ var userListId = $(this).find('.userId').val(); if(userListId == userId){ ifMatchId = true; $(this).find('.title').addClass('title-color'); }else { $(this).find('.title').removeClass('title-color'); } }); if(ifMatchId == false){ var html = ''; html += '
    '; html += ''; html += '
    '; html += userName; html += '
    '; html += ''; html += '
    '; $('.user-chat-content .chat-list').append(html); } userMain.initMatchUser(userId); var pData = { "content": '', "fid": send_id, "tid": userId, 'initType' :1 }; socket.send(JSON.stringify(pData)); //选择用户初始化消息 }); }, }; $(function () { swoole_chat.init(); })