/** * 获取在线状态,目前返回一个在线client_id数组,client_id为key * @return array */ public static function getALLClientInfo($group = null) { $gateway_data = GatewayProtocol::$empty; if (!$group) { $gateway_data['cmd'] = GatewayProtocol::CMD_GET_ALL_CLIENT_INFO; } else { $gateway_data['cmd'] = GatewayProtocol::CMD_GET_CLINET_INFO_BY_GROUP; $gateway_data['ext_data'] = $group; } $status_data = array(); $all_buffer_array = self::getBufferFromAllGateway($gateway_data); foreach ($all_buffer_array as $local_ip => $buffer_array) { foreach ($buffer_array as $local_port => $buffer) { $data = json_decode(rtrim($buffer), true); if ($data) { foreach ($data as $connection_id => $session_buffer) { $status_data[Context::addressToClientId($local_ip, $local_port, $connection_id)] = $session_buffer ? Context::sessionDecode($session_buffer) : array(); } } } } return $status_data; }