netty點對點聊天儲存聊天記錄
阿新 • • 發佈:2019-02-07
效果
聊天介面
聊天記錄
實現方案
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
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);
}
這樣就可以儲存聊天記錄啦