接着这一篇点对点通讯的来,请先弄懂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);
}
这样就可以保存聊天记录啦