必威体育Betway必威体育官网
当前位置:首页 > IT技术

getwayworker长连接下的普通文本消息之聊天记录持久化

时间:2019-06-29 07:44:30来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

getway

针对课程:getwayworker长连接下的普通文本消息之聊天记录持久化

HTTPs://study.163.C++om/course/courseLearn.htm?courseId=1005015012#/learn/video?lessonId=1051351979&courseId=1005015012

1.判断用户是否在线

在events.php中:

public static function onmessage($client_id, $message){

$message_data = json_decode($message,true);//把json数据转换成数组

//判断msg数据是否存在
if(!$message_data){
return;
}

switch($message_data['type']){

case "bind":
$fromid = $message_data['fromid'];
Gateway::bindUid($client_id,$fromid);//客户端id与fromid绑定
retrun;

case "say":
var text =nl2br(HTMLspecialchars($message_data['data']));
var fromid = $message_data['fromid'];
var toid = $message_data['toid'];

//组装一套要发送给客户端的数据:
 $data = [
'type'=>'text',
'id'=>$client_id,//可选
'data'=>$text,
'from'=>$fromid,
'toid' =>$toid,
'time'=>time()
];

//判断用户的在线情况:
if(Gateway::isUidOnline($toid)){
Gateway::sendToUid($toid,json_encode($data));//将已组装好的数据,发送给已绑定的uid客户端,将数组转换成json发给客户端
$data['isread']=1;
}else{
$data['isread']=0;
}
$data['type']="save";

Gateway::sendToUid($fromid,json_encode($data));
retrun;
}
}

前端页面:

客户端接收到events.php发送过来的数据,进行处理:

var fromid = {$fromid};
var toid = {$toid};
var API_URL = "/api/chat/";
ws.onmessage = function(e){
var  message = eval("("+e.data+")"); //将客户端收到的json转换成js数据
switch(message.type){
case "init":
var bind = '{"type":'bind',"fromid":"'+fromid+'"}';
ws.send(bind);
ruturn;

case "text":

if(toid==message.fromid){
$(".chat-content").APPend('<p>'+message.data+'</p>');
}
retrun;

case "save":
save_message(message);
return;

}
}

function save_message(message){
$.post(
API_URL+"save_message",
message,
function(){},'json'
)
}

API模块下,Chat控制器:

namespace app\api\controller;

class Chat extends Controller{

/*文本消息的数据持久化*/
public function save_message(){
if(request::instance()->isAjax()){
$message = input("post.");
$datas['fromid'] = $message['fromid'];
$datas['fromname'] =$this->getName($datas['fromid']) ;
$datas['toid'] = $message['toid'];
$datas['toname'] =$this->getName($datas['toid']) ;
$datas['content'] = $message['data'];
$datas['time'] = $message['time'];
$datas['isread'] = $message['isread'];
$datas['type'] = 1 ;//文本为1,图片为2
Db::name("communication")->insert($datas);

}
}


/*根据用户id,返回用户的姓名*/
public function getName($uid){
$userinfo = Db::name("user")->where('id',$uid)->field('nickname')->find();
return $userinfo['nickname'];

}
}

相关阅读

手机QQ聊天记录文件解密方法学习

解密手机QQ聊天记录方法汇总 解密方法: (1)聊天记录内容明文:D (2)聊天记录内容密文:E (3)手机IMEI(MEID): IMEI (4)公式:E = D^IMEI 具体

怎么同时接收老公微信不被发现,教你怎么恢复聊天记录!

微信也许是我们现在每天接触最多的社交工具,虽然每天使用,但仍然有一些比较隐秘却又很实用的小功能没被大家发现。今天九妹就本着乐

qq聊天记录删除了怎么恢复?一招帮你搞定

腾讯QQ可以说是早期时候人群覆盖面比较大的社交软件了,在微信没有出现之前,腾讯QQ是我们使用最多的社交软件,即使是现在QQ依然拥有着

远程偷看微信聊天记录(逆天操作技巧)

偷看对方微信聊天记录,是一件情不自禁的事。有时候我们都会安奈住这个好奇心,对于一些朋友或许偷看就那么一回事,但对于绝大多数朋友

微信1.2 for Windows(电脑版)发布下载 新增保存聊天记

微信1.2 for Windows(微信电脑版)发布下载,新增保存聊天记录,这让不少用户都兴奋不已。而且还可以接受转账。不知道是否可以在PC端上

分享到:

栏目导航

推荐阅读

热门阅读