分享一个PHP环信服务端操作类

分享一个PHP环信服务端操作类

云青
2019-04-03 / 2 评论 / 3,758 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年01月24日,已超过264天没有更新,若内容或图片失效,请留言反馈。

之前做直播系统,需要用到通信这一块,由于官方文档没有sdk,博主本人也是google的,顺便修改了一下

    <?php
    
    namespace hx;
    
    class Hx
    {
        private $app_key = '1106196338107043#bfzb';
        private $client_id = 'YXA68gwqIDr4Eem08DO8sr_xCA';
        private $client_secret = 'YXA57if_NzYCtL_96DktWsvILrlcU24';
        private $url = "https://a1.easemob.com/1106190228107043/bfzb";
    
        /*
         * 获取APP管理员Token
         */
        public function __construct()
        {
            $url = $this->url . "/token";
            $data = array(
                'grant_type' => 'client_credentials',
                'client_id' => $this->client_id,
                'client_secret' => $this->client_secret
            );
            $rs = json_decode($this->curl($url, $data), true);
            $this->token = $rs['access_token'];
        }
    
        /*
         * 注册IM用户(授权注册)
         */
        public function hx_register($username, $password, $nickname)
        {
            $url = $this->url . "/users";
            $data = array(
                'username' => $username,
                'password' => $password,
                'nickname' => $nickname
            );
            $header = array(
                'Content-Type: application/json',
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, $data, $header, "POST");
        }
    
        /*
         * 给IM用户的添加好友
         */
        public function hx_contacts($owner_username, $friend_username)
        {
            $url = $this->url . "/users/${owner_username}/contacts/users/${friend_username}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "POST");
        }
    
        /*
         * 解除IM用户的好友关系
         */
        public function hx_contacts_delete($owner_username, $friend_username)
        {
            $url = $this->url . "/users/${owner_username}/contacts/users/${friend_username}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "DELETE");
        }
    
        /*
         * 查看好友
         */
        public function hx_contacts_user($owner_username)
        {
            $url = $this->url . "/users/${owner_username}/contacts/users";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "GET");
        }
        
        /* 发送文本消息 */
        public function hx_send($sender, $receiver, $msg)
        {
            $url = $this->url . "/messages";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            $data = array(
                'target_type' => 'users',
                'target' => array(
                    '0' => $receiver
                ),
                'msg' => array(
                    'type' => "txt",
                    'msg' => $msg
                ),
                'from' => $sender,
                'ext' => array(
                    'attr1' => 'v1',
                    'attr2' => "v2"
                )
            );
            return $this->curl($url, $data, $header, "POST");
        }
    
        /* 查询离线消息数 获取一个IM用户的离线消息数 */
        public function hx_msg_count($owner_username)
        {
            $url = $this->url . "/users/${owner_username}/offline_msg_count";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "GET");
        }
        
        /*
         * 获取IM用户[单个]
         */
        public function hx_user_info($username)
        {
            $url = $this->url . "/users/${username}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "GET");
        }
    
        /*
         * 获取IM用户[批量]
         */
        public function hx_user_infos($limit)
        {
            $url = $this->url . "/users?${limit}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "GET");
        }
    
        /*
         * 重置IM用户密码
         */
        public function hx_user_update_password($username, $newpassword)
        {
            $url = $this->url . "/users/${username}/password";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            $data['newpassword'] = $newpassword;
            return $this->curl($url, $data, $header, "PUT");
        }
        
        /*
         * 删除IM用户[单个]
         */
        public function hx_user_delete($username)
        {
            $url = $this->url . "/users/${username}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            return $this->curl($url, "", $header, "DELETE");
        }
    
        /*
         * 修改用户昵称
         */
        public function hx_user_update_nickname($username, $nickname)
        {
            $url = $this->url . "/users/${username}";
            $header = array(
                'Authorization: Bearer ' . $this->token
            );
            $data['nickname'] = $nickname;
            return $this->curl($url, $data, $header, "PUT");
        }
    
        /*
         *
         * curl
         */
        private function curl($url, $data, $header = false, $method = "POST")
        {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            if ($header) {
                curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            }
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
            if ($data) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
            }
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            $ret = curl_exec($ch);
            return $ret;
        }
    }
    $rs = new Hx();
    // 注册的用户
    echo $rs->hx_register('qwerasd', 'qazwsx', '福州123');
    // 给IM用户的添加好友
    // echo $rs->hx_contacts('admin888', 'qwerasd');
    /* 发送文本消息 */
    // echo $rs->hx_send('213123','admin888','dfadsr214wefaedf');
    /* 消息数统计 */
    // echo $rs->hx_msg_count('admin888');
    /* 获取IM用户[单个] */
    // echo $rs->hx_user_info('admin888');
    /* 获取IM用户[批量] */
    //  echo $rs->hx_user_infos('20');
    /* 删除IM用户[单个] */
    // echo $rs->hx_user_delete('wwwwww');
    /* 修改用户昵称 */
    // echo $rs->hx_user_update_nickname('asaxcfasdd','网络科技');
    /* 重置IM用户密码 */
    // echo $rs->hx_user_update_password('asaxcfasdd','asdad');
    /* 解除IM用户的好友关系 */
    // echo $rs->hx_contacts_delete('admin888', 'qqqqqqqq');
    /* 查看好友 */
    //echo $rs->hx_contacts_user('admin888');
0

评论 (2)

取消
  1. 头像
    搬瓦工
    Windows 8.1 · Google Chrome

    感谢分享···········

    回复
    1. 头像
      云青 作者
      Linux · Google Chrome
      @ 搬瓦工

      常来小站~~

      回复
Title - Artist
0:00