首页 » 网站建设 » phpredis实现聊天技巧_运用SEERedis构建简单纯真WEB聊天系统

phpredis实现聊天技巧_运用SEERedis构建简单纯真WEB聊天系统

duote123 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

SSE(Server-Sent Events):普通阐明起来便是一种基于HTTP的,由做事端持续向客户端发送数据的技能。
SSE 无需做事端进行额外支配,SSE 默认支持断线重连,与做事器建立连接后,你乃至不用考虑客户的网络非常情形。

二、Redis 技能特点

phpredis实现聊天技巧_运用SEERedis构建简单纯真WEB聊天系统

Redis性能极高的内存数据库,它读写速率十分惊人。
它不仅仅支持大略的key-value类型的数据,同时还供应list,set,zset,hash等数据构造的存储,可以说利用Redis进行特天命据的读取十分方便,本例中利用List数据类型存储通报谈天内容,关于List数据类型的特点,大家可自行理解。

phpredis实现聊天技巧_运用SEERedis构建简单纯真WEB聊天系统
(图片来自网络侵删)

三、大略单纯谈天系统模式概述

从上图中可以看出,系统基本可分为三个紧张部分:

A、数据呈现

这里要支配一些基本的谈天元素,如好友列表、谈天内容的展示、谈天信息的发出(提交至C),同时还卖力与B建立交互连接,可以实时从B获取干系的谈天内容。

B、数据交互

卖力从C通过Redis获取谈天内容,并输出给A。

C、信息存储

卖力吸收A发出的谈天信息并存储至Redis(如有需求,还可存储至数据库)。

四、紧张关键点解析

(1)A与做事器(B)建立SEE连接,并处理获取到的谈天内容

$(document).ready(function(){startSse();//页面初始化完成后直接与做事器建立连接});function startSse(){var Sse = new EventSource('ser.php');Sse.onmessage = function(event){//取得谈天内容var d = JSON.parse(event.data);if(d.length>0){for(var i=0;i<d.length;i++){//读取做事器通报过来的(可能不止一条)var fuid = d[i].fromid;//可根据fuid让相应用户头像闪烁(类似QQ的新提醒)var msg = d[i].msg;$('#info'+fuid).append(msg);//将谈天内容添加到相应的位置}}}Sse.onerror = function(){//缺点处理}}

(2)B从Redis读取数据并输出给A

header('X-Accel-Buffering: no');header('Content-Type: text/event-stream');header('Cache-Control: no-cache');ob_end_clean(); ob_implicit_flush(1); $uid = 'laoli';//建议通过session或cookies获取当前用户的uidinclude('redis.php');$redis = new myredis;while(1){//开启一个无限循环,持续向客户端输出 if(connection_aborted()){//客户挂掉连接后(如关闭页面)退出循环,开释资源break; }else{//$msgDate = array();while($msg = $redis->rpop('chat_'.$uid)){ //从Redis,List表中取出谈天内容,把稳list表的命名是和用户ID关联的, //$redis->rpop倒序取出并剔除,因此这个循环是可以全部取出与当前用户干系的谈天内容,同时清空该用户的List表 $msgDate[] = json_decode($msg,true);//将取出的一条,转为数组}//echoUserMsg($msgDate);//输出给客户端 sleep(3);}}function echoUserMsg($msgData){//拼接输出内容$msgDataToJson = json_encode($msgData);//拼接输出,关于SEE的输出规则,可自行理解 $str = "id:{0}".PHP_EOL; $str .= "retry: {1000}".PHP_EOL; $str .= "data: {$msgDataToJson}".PHP_EOL; $str .= PHP_EOL; echo $str;}

(3)C取得A发出的谈天内容,存储至Redis。

//$myuid(发送者id),$tuid(吸收者id),$msg(谈天内容)//上面三项基本数据可以通过Session及A提交(Post)得到//构建一笔记载,包括上述三项基本要素$msgArr = array('fromid'=>$myuid,'touid'=>$tuid,'msg'=>$msg);//存入缓存$redis = new myredis;$redis->lpush('chat_'.$tuid,json_encode($msgArr));//将记录存储至Redis,List表中,存储格式是json字符串//把稳List表的命名跟吸收者的ID关联unset($redis);//如有需求,下面可进一步将谈天内容存入数据库-------

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0