예제 #1
0
 /**
  * 用户登录接口
  * @param int $client_id 客户端Id
  * @param array $message 客户端消息
  * $message = array(
  *     'uid'=> ':integer', //用户uid
  *     'oauth_token' => 'string', // 用户oauth_token
  *     'oauth_token_secret' => ':string', // 用户oauth_token_secret
  * );
  * @return void
  */
 protected static function loginMessage($client_id, array $message = array())
 {
     // 取得客户端数据包各参数
     $uid = isset($message['uid']) ? (int) $message['uid'] : null;
     $oauth_token = isset($message['oauth_token']) ? (string) $message['oauth_token'] : null;
     $oauth_token_secret = isset($message['oauth_token_secret']) ? (string) $message['oauth_token_secret'] : null;
     // 如果都正确传递,那么尝试登陆用户
     if ($uid && $oauth_token && $oauth_token_secret) {
         // 调用登陆接口尝试登陆,如果能正确登陆,则发送登陆成功的提示
         if (Message::login($client_id, $uid, $oauth_token, $oauth_token_secret)) {
             self::sendDataToCurrentClient('login', (int) Message::getLoggedUserInfo('uid'));
             self::pushMessageDataToCurrent();
             return;
             // 登录已经成功,后面不在执行,所以直接返回
         }
     }
     // 无法登陆或数据包参数不完整,则发送登陆错误信息
     self::sendDataToCurrentClient('login', $uid, 1004, 'Login failed');
 }
예제 #2
0
 /**
  * 向客户端推送消息
  * @param array $data 需要推送的消息列表
  * @param array|string $users 需要推送到的用户UID列表
  * @param bool $remove_current_user 是否包含当前用户
  * @throws Exception
  */
 protected static function pushMessageData($data, $users, $remove_current_user = true)
 {
     $count = count($data);
     $client_ids = Message::getClientByUser($users, $remove_current_user);
     if ($client_ids) {
         $message = json_encode(array('type' => 'push_message', 'result' => array('from' => 'app', 'length' => $count, 'list' => $data), 'status' => 0, 'msg' => ''));
         Gateway::sendToAll($message, array_values($client_ids));
         $users = array_diff($users, array_keys($client_ids));
     }
     if ($remove_current_user) {
         $uid = (int) Message::getLoggedUserInfo('uid');
         if (in_array($uid, $users)) {
             $key = @array_search($uid, $users);
             if (isset($users[$key])) {
                 unset($users[$key]);
             }
         }
     }
     if ($users) {
         $data = array_pop($data);
         $alert = $data['content'];
         $data['push_type'] = 'message';
         \Lib\Jpush::pushMessage($users, $alert, $data);
     }
 }