Example #1
0
 /**
  * 想某个用户网关发送命令和消息
  * @param int $client_id
  * @param int $cmd
  * @param string $message
  * @return boolean
  */
 protected static function sendCmdAndMessageToClient($client_id, $cmd, $message, $ext_data = '')
 {
     // 如果是发给当前用户则直接获取上下文中的地址
     if ($client_id === Context::$client_id || $client_id === null) {
         $address = long2ip(Context::$local_ip) . ':' . Context::$local_port;
         $connection_id = Context::$connection_id;
     } else {
         $address_data = Context::clientIdToAddress($client_id);
         $address = long2ip($address_data['local_ip']) . ":{$address_data['local_port']}";
         $connection_id = $address_data['connection_id'];
     }
     $gateway_data = GatewayProtocol::$empty;
     $gateway_data['cmd'] = $cmd;
     $gateway_data['connection_id'] = $connection_id;
     $gateway_data['body'] = $message;
     if (!empty($ext_data)) {
         $gateway_data['ext_data'] = $ext_data;
     }
     return self::sendToGateway($address, $gateway_data);
 }