1. 程式人生 > >netty點對點聊天儲存聊天記錄

netty點對點聊天儲存聊天記錄

效果
聊天介面
這裡寫圖片描述

這裡寫圖片描述

聊天記錄
這裡寫圖片描述
實現方案
1首先拼接使用者id和好友id在Redis資料庫中註冊key值

    Jedis   jedis = new Jedis("xxx.xx.xx.xxx", 6379);
        //許可權認證
        jedis.auth("xxxx");
        if(!(jedis.exists(key))){
            //聊天記錄儲存時間為1個月
              jedis.setex(key,2592000,value);
              jedis.close();
        }

2

當實時聊天時將 聊天內容分別新增到使用者自己的key和好友的key

   public static void broadcastMess(String sender ,String  fid,String message) {

             for(int i=0;i<channelInfos.get(fid).size();i++){
                    channelInfos.get(fid).get(i).writeAndFlush(new TextWebSocketFrame("chatflag"+","+sender+","+message));
                }
             //使用者本人儲存一份
UserInfoManager.appendString(sender+fid,","+sender+":"+message); //同時備份到好友的聊天記錄 UserInfoManager.appendString(fid+sender,","+sender+":"+message); }

如果只往自己的key中填資料那麼,那麼就就只能獲得自己的聊天記錄,你傳送的資訊往好友的Key填充時,同樣好友傳送訊息時也會往你的Key中填充記錄,這樣雙方的key都可以儲存雙方的聊天記錄。
就像這樣
這裡寫圖片描述
這裡寫圖片描述

3當需要聊天記錄時,就直接去Redis通過key值去取
介面

    public PageData selectChatLog() throws Exception {
        PageData pd=this.getPageData();
        PageData result=new PageData();
        String logFlag=pd.getString("logFlag");
        Jedis   jedis = new Jedis("xxx.xx.xx.xxx", 6379);
        //許可權認證
        jedis.auth("xxxx");
        String chatLog=jedis.get(logFlag);
        result.put("code", "200");
        result.put("msg", chatLog);
        return result;
    }

請求介面,並把請求的資料處理成dom

   $(function () {
            $.ajax({
                type : "POST",
                url : domianURL + "/equipment2/selectChatLog.webapp",
                data : {
                    logFlag : "5083117106284601"
                },
                dataType : "json",
                success : function(data) {
                   console.log(data);
                   if(data.msg!=""){
                       var chatlogs=data.msg.split(",");
                       for(var i=1;i<chatlogs.length;i++){
                           var chatInfo=chatlogs[i].split(":");
                           if(chatInfo[0]==myid){
                               appendRHtml(chatInfo[1]);
                           }
                           if(chatInfo[0]==fid){
                               appendLHtml(chatInfo[1])
                           }
                       }

                   }

                }
            })
        })

        function appendRHtml(info){
            var text = "<div class='chat-show row-flex-end'>"
                + "<span class='chat-show-span row-center'>"
                + info
                + "</span>"
                + "<img src='../../img/jiaxiaohutong/mylogo.jpg' class='chat-show-img'>"
                + " </div>";
            $("#logCentent").append(text);
        }
       function appendLHtml(info){
           var text ="<div class='chat-show row-flex-start'>"
               + "<img src='../../img/jiaxiaohutong/mylogo.jpg' class='chat-show-img'>"
               + "<span class='chat-show-span row-center'>" + info
               + "</span>" + " </div>";
           $("#logCentent").append(text);
       }

這樣就可以儲存聊天記錄啦