Carregando...

F5HLIVE Tutoriais

Como podemos ajudar seu projeto hoje?

Encontre guias práticos para widgets, serviços e nossa loja. Não encontrou o que precisava? Pergunte nos comentários ou avalie os conteúdos para nos ajudar a melhorar.

Websocket Real Time 5 visualizações 03/07/2026 23:17

Teste simples conexão e envio de evento Pusher

Teste simples de conexão autenticada e envio de evento com API real-time do Websocket Pusher

Imagem

Protocolos transportes disponíveis atuais

O SDK da F5HLIVE (que tem a mesma lógica do Pusher) consegue se conectar via WebSocket e, caso esse transport não esteja disponível ou seja bloqueado, ele recorre automaticamente a outros transports. Abaixo estão todos os transports que o cliente pode utilizar, com a forma como eles são classificados no SDK:

Transporte
Arraste elementos aqui
Descrição
Arraste elementos aqui
Quando é usado
Arraste elementos aqui
ws (WebSocket puro)
Conexão direta via upgrade HTTP → WebSocket, sem TLS.
Quando a página está em http e o cliente pode abrir portas 80.
Arraste elementos aqui
**wss# Protocolos Disponíveis no WebSocket F5HLIVE
Arraste elementos aqui

Arraste elementos aqui

A API Realtime da F5HLIVE suporta diversos tipos de conexão simultaneamente:

Protocolo
Arraste elementos aqui
Descrição
Arraste elementos aqui
WebSocket
WS / WSS
Arraste elementos aqui
SockJS
Arraste elementos aqui
Todos os transports reais
Arraste elementos aqui
Server-Sent Events
Arraste elementos aqui
SSE
Arraste elementos aqui
XHR
Arraste elementos aqui
Streaming
Arraste elementos aqui
Polling
Arraste elementos aqui
Long/Short polling
Arraste elementos aqui
JSONP
Arraste elementos aqui
Suportado

Teste simples de conexão autenticada e envio de evento com API real-time do Websocket Pusher, necessário as credencias da API

No painel da API copie as credenciais, crie um arquivo no formato exemplo pusher-teste.php cole o código insira a suas credencias, e rode a url https://seudominio.com/pushet-teste.php , se estiver com o seu painel da API aberto você deve receber um mensagem no painel do evento recebido.

É necessário o SDK pusher.php ou composer. SDK => https://github.com/f5hlive

<?php
// Incluir autoloader do Composer
require_once __DIR__ . '/vendor/autoload.php';

use Pusher\Pusher;

// === CONFIGURAÇÕES PUSHER ===
 $app_id  = 'SEU_APP_ID';
 $key     = 'SUA_API_KEY';
 $secret  = 'SUA_CHAVE_SECRETA';
 $cluster = 'CLUSTER'; //EX: custom , server-eu, br.

// IMPORTANTE: Defina aqui o host do seu servidor customizado
// A biblioteca Pusher tenta acessar 'api-custom.f5hlive.com.br' por padrão se isto não for definido.
 $custom_host = "api-{$cluster}.f5hlive.com.br";

// === 1. TESTE DE FALLBACK DO SERVIDOR (cURL autenticado) ===
// Monta a URL manualmente para testar conectividade crua
 $test_url = "https://{$custom_host}/apps/{$app_id}/channels";

 $timestamp = time();
 $auth_version = '1.0';
 $method = 'GET';
 $path = "/apps/{$app_id}/channels";

// Prepara parâmetros para autenticação
 $params = [
    'auth_key' => $key,
    'auth_timestamp' => $timestamp,
    'auth_version' => $auth_version,
];

// Ordena parâmetros e monta query string manualmente para evitar problemas de encoding
ksort($params);
 $query_parts = [];
foreach ($params as $k => $v) {
    $query_parts[] = "{$k}={$v}";
}
 $query_string = implode('&', $query_parts);

// Gera a assinatura (HMAC SHA256)
// Formato: "METHOD\nPATH\nQUERY_STRING"
 $string_to_sign = "{$method}\n{$path}\n{$query_string}";
 $auth_signature = hash_hmac('sha256', $string_to_sign, $secret);

// URL final para o cURL
 $full_url = "https://{$custom_host}{$path}?{$query_string}&auth_signature={$auth_signature}";

 $ch = curl_init($full_url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => true,
    CURLOPT_NOBODY => false,
    CURLOPT_SSL_VERIFYPEER => true, // Mantenha true em produção
    CURLOPT_TIMEOUT => 10,
]);
 $response = curl_exec($ch);
 $curl_error = curl_error($ch);
 $info = curl_getinfo($ch);
curl_close($ch);

// === ANALISAR RESPOSTA DO TESTE ===
 $header_size = $info['header_size'];
 $headers = substr($response, 0, $header_size);
 $body = substr($response, $header_size);

 $server_test = [
    'status' => 'error',
    'message' => 'Falha na conexão com o servidor Pusher.',
    'http_code' => $info['http_code'],
    'curl_error' => $curl_error,
    'body' => json_decode($body, true) ?? $body
];
 
if ($info['http_code'] === 200 && !$curl_error) {
    $server_test = [
        'status' => 'ok',
        'message' => 'Servidor Pusher responde corretamente.',
        'http_code' => 200,
        'channels_count' => count(json_decode($body, true)['channels'] ?? []),
        'response_sample' => json_decode($body, true)
    ];
}

// === 2. DISPARO DO EVENTO COM PUSHER  ===
 $options = [
    'cluster' => $cluster, // Mantém o cluster
    'useTLS' => true,      // Força HTTPS //Opcional
    'encrypted' => true,
    // SOLUÇÃO: Define o host customizado explicitamente
    'host' => $custom_host 
];

 $pusher_result = ['status' => 'error', 'message' => 'Pusher não instanciado.'];

try {
    $pusher = new Pusher($key, $secret, $app_id, $options);

    $data = [
        'message' => 'Hello Conect Vendor Load - Teste Fallback ' . date('Y-m-d H:i:s'),
        'test_id' => uniqid(),
        'server_check' => $server_test['status']
    ];

    // O trigger retorna um objeto ou array dependendo da versão, não apenas true/false
    $trigger_result = $pusher->trigger('my-channel', 'my-event', $data);

    // Verificação mais robusta do resultado
    $success = ($trigger_result !== false && (is_array($trigger_result) || is_object($trigger_result)));

    $pusher_result = [
        'status' => $success ? 'ok' : 'error',
        'message' => $success ? 'Evento disparado com sucesso.' : 'Falha no trigger.',
        'payload' => $data,
        'raw_result' => $trigger_result
    ];

} catch (Exception $e) {
    $pusher_result = [
        'status' => 'error',
        'message' => 'Erro Pusher: ' . $e->getMessage(),
        'trace' => $e->getTraceAsString() // Útil para debug
    ];
}

// === 3. RETORNO PERSONALIZADO EM JSON ===
header('Content-Type: application/json');

echo json_encode([
    'pusher_test' => [
        'app_id' => $app_id,
        'cluster' => $cluster,
        'host_used' => $custom_host, // Mostra qual host está sendo usado
        'timestamp' => date('c'),
    ],
    'server_fallback_test' => $server_test,
    'event_trigger' => $pusher_result,
    'debug' => [
        'curl_info' => $info,
        'request_url' => $full_url
    ]
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
?>

Este tutorial foi útil?

O voto ajuda a destacar os guias mais eficientes.

Compartilhar no Facebook
Usuarios não logados podem ler normalmente, mas precisam entrar na conta para votar ou comentar.

Tire sua dúvida ou compartilhe sua experiência

Se encontrou alguma dificuldade técnica, comente aqui embaixo. Analisamos todos os feedbacks para manter nossa documentação sempre atualizada.

0 comentários
Entre na sua conta para comentar ou responder neste tutorial.
Nenhum comentário publicado ainda.
Agent Daniel AI
Auto
Bot
Olá ! Como posso ajudar você hoje?
Pensando

Iniciar Novo Chat?

Isso limpará todo o histórico da conversa atual.

Modelo de IA

Como o modelo será escolhido?