没有合适的资源?快使用搜索试试~ 我知道了~
php redis 处理websocket聊天记录的实例代码
1 下载量 129 浏览量
2020-12-18
05:07:01
上传
评论
收藏 56KB PDF 举报
温馨提示
试读
3页
具体代码如下所示: <?phpini_set('display_errors', 'on'); class chatClass { private $redis; //这个变量模拟用户当前状态,是否登录,是否可查看 public $checkUserReadable = false; //构造函数链接redis数据库 public function __construct() { $this -> redis = new Redis(); $this -> redis -> connect('127.0.0.1', '6379'); $this -> redis ->
资源推荐
资源详情
资源评论
php redis 处理处理websocket聊天记录的实例代码聊天记录的实例代码
具体代码如下所示:
<?phpini_set('display_errors', 'on');
class chatClass {
private $redis;
//这个变量模拟用户当前状态,是否登录,是否可查看
public $checkUserReadable = false;
//构造函数链接redis数据库
public function __construct() {
$this -> redis = new Redis();
$this -> redis -> connect('127.0.0.1', '6379');
$this -> redis -> auth('***cnblogs.com/handle');
}
/*
发送消息时保存聊天记录
* 这里用的redis存储是list数据类型
* 两个人的聊天用一个list保存
*
* @from 消息发送者id
* @to 消息接受者id
* @meassage 消息内容
*
* 返回值,当前聊天的总聊天记录数
*/
public function setChatRecord($from, $to, $message) {
$data = array('from' => $from, 'to' => $to, 'message' => $message, 'sent' => time()/*, 'recd' => 0*/);
$value = json_encode($data);
//生成json字符串
$keyName = 'rec:' . $this -> getRecKeyName($from, $to);
//echo $keyName;
$res = $this -> redis -> lPush($keyName, $value);
if (!$this -> checkUserReadable) {//消息接受者无法立刻查看时,将消息设置为未读
$this -> cacheUnreadMsg($from, $to);
}
return $res;
}
/*
* 获取聊天记录
* @from 消息发送者id
* @to 消息接受者id
* @num 获取的数量
*
* 返回值,指定长度的包含聊天记录的数组
*/
public function getChatRecord($from, $to, $num) {
$keyName = 'rec:' . $this -> getRecKeyName($from, $to);
//echo $keyName;
$recList = $this -> redis -> lRange($keyName, 0, (int)($num));
return $recList;
}
/*
* 当用户上线时,或点开聊天框时,获取未读消息的数目
* @user 用户id
*
* 返回值,一个所有当前用户未读的消息的发送者和数组
* 数组格式为‘消息发送者id'=>‘未读消息数目'
*
*/
public function getUnreadMsgCount($user) {
return $this -> redis -> hGetAll('unread_' . $user);
}
/*
* 获取未读消息的内容
* 通过未读消息数目,在列表中取得最新的相应消息即为未读
* @from 消息发送者id
* @to 消息接受者id
*
* 返回值,包括所有未读消息内容的数组
*
*
*/
public function getUnreadMsg($from, $to) {
$countArr = $this -> getUnreadMsgCount($to);
$count = $countArr[$from];
$keyName = 'rec:' . $this -> getRecKeyName($from, $to);
return $this -> redis -> lRange($keyName, 0, (int)($count));
资源评论
weixin_38721652
- 粉丝: 3
- 资源: 935
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功