thinkphp 和 Gatewayworker整合web聊天2.0

继续上篇文章(链接),把功能添加到项目里面
项目使用thinkphp3.2.3开发
现在主要做手机端功能,页面也是手机端的页面,用到了vue,js,可以实现消息自动滚动到底部的最新消息
更多历史消息往上滚动查看
页面和样式代码如下:






web chat



接收者

php代码如下:

display();
    } 
    public function chat() {
        $this->uid = I('uid');
        if($this->uid == 0) $this->error("请选择用户");
        session('uid', $this->uid);
        $this->assign('uid',$this->uid);

        // 此处查询当前用户的聊天记录,输出到页面
        $list[0]['text'] = "ThinkPHP框架";
        $list[0]['right'] = 0;
        $list[0]['imgsrc'] = C('HOST').'/Public/images/pic.jpg';

        $list[1]['text'] = "Ci框架";
        $list[1]['right'] = 1;
        $list[1]['imgsrc'] = C('HOST').'/Public/images/pic.jpg';
        $arr['json'] = json_encode($list);
        if(count($list) < 1) $arr['json'] = '[]';
        $this->assign('arr',$arr);
        $this->display();
    } 

    function bind() { 
        $uid = session('uid');
        $client_id = I('client_id');
        $gateway = new \Org\Util\Gateway();
        $gateway->bindUid($client_id, $uid);
        $count = $gateway->getAllClientCount();
        $message = '绑定成功' . $uid . '-' . $client_id.'-共有'.$count.'个人在线';
        echo $message;
        // $gateway->sendToUid($uid, $message);
    } 

    function message() { 
        // 此处处理接收用户发过来的消息内容,保存数据库,推送给发送者和接受者
        $to_uid = I('uid');
        $message = I('msg');
        $gateway = new \Org\Util\Gateway();
        $data['text'] = $message;
        $data['from_uid'] = session('uid');
        $data['to_uid'] = $to_uid;
        $data['right'] = 0;
$data['imgsrc'] = C('HOST').'/Public/images/pic.jpg';
        if ($gateway->isUidOnline($to_uid)) {
            // 判断接受小时着是否在线,在线执行发送消息
            $gateway->sendToUid($to_uid, json_encode($data));
        }else{
            $data['text'] .= '[对方不在线]';
        }

$data['right'] = 1;
        $gateway->sendToUid($data['from_uid'], json_encode($data)); // 发给自己 
        
        echo json_encode($data);
    }

    function more_msg(){
        // 此处根据当前用户和聊天用户查询数据返回聊天记录数组
        $list[0]['text'] = "1";
        $list[0]['right'] = 0;
        $list[0]['imgsrc'] = C('HOST').'/Public/images/pic.jpg';

        $list[1]['text'] = "2";
        $list[1]['right'] = 1;
        $list[1]['imgsrc'] = C('HOST').'/Public/images/pic.jpg';
        echo json_encode($list);
    }
}

你可能感兴趣的:(thinkphp 和 Gatewayworker整合web聊天2.0)