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 2 visualizações 21/09/2026 17:47

Pusher real time exemplo criar um auth PHP

Exemplo simples de como criar um auth.php para conexões autenticadas via auth.php

Imagem

Esse exemplo simples de como criar um auth

$API_KEY = 'SUA_API_KEY';

$API_SECRET = 'SEU_API_SECRET'; 
$APP_ID = 'SEU_APP_ID';
// Produção: https://api-[SEU_CLUSTER].f5hlive.com.br 
// RECOMENDADO! Sempre informe o prefixo do seu cluster atual (ex: api-ca). 
// Caso contrário, a requisição cairá no cluster padrão (ex: api-de), 
// causando erro de leitura se o socket do usuário estiver fisicamente 
// conectado em outra região (ws-ca, sse-ca, sockjs-ca, etc).

Como usar no front

## Invocando o auth

Exemplo:

pusher = new Pusher(APP_KEY, {
    cluster: 'custom',
    channelAuthorization: {
    endpoint: '/sua_pasta/auth.php',
    transport: 'ajax'
    }
});

Requer Auth configurado /sua_pasta/auth.php 

const endpoint = new URL(STATUS_PROXY_URL, window.location.origin);
endpoint.searchParams.set('socket_id', socketId);
endpoint.searchParams.set('channel', 'presence-canais-demo'); 
const data = await (await fetch(endpoint)).json(); 
// data = { statusSocketid, countChannel, countSocketidChannel, user_count }

<?php
// ============================================================
// Endpoint de autorização de canal (presence / private)
// ============================================================
// Apenas um exemplo básico de valiação com Auth

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, X-Requested-With');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(204);
    exit;
}

// ---------- CONFIG ----------
$API_KEY    = 'SUA_API_KEY';
$API_SECRET = 'SUA_SECRET_KEY';
// ----------------------------

$socketId = $_POST['socket_id'] ?? '';
$channel  = $_POST['channel_name'] ?? '';

if (!$socketId || !$channel) {
    http_response_code(400);
    echo json_encode(['error' => 'socket_id e channel_name são obrigatórios']);
    exit;
}

// Gera a assinatura no formato que o server Pusher/compatible espera
$stringToSign = $socketId . ':' . $channel;
$signature    = hash_hmac('sha256', $stringToSign, $API_SECRET);
$auth         = $API_KEY . ':' . $signature;

// Resposta básica (funciona para private e presence)
$response = [
    'auth' => $auth
];

// Se for canal presence, precisa de channel_data
if (strpos($channel, 'presence-') === 0) {
    // Dados do usuário (obrigatório em presence)
    $userData = [
        'user_id'   => 'user-' . substr(md5($socketId), 0, 8), // ID único por conexão
        'user_info' => [
            'name' => 'Visitante'
        ]
    ];

    $channelData = json_encode($userData);
    $stringToSignPresence = $socketId . ':' . $channel . ':' . $channelData;
    $signaturePresence    = hash_hmac('sha256', $stringToSignPresence, $API_SECRET);

    $response = [
        'auth'         => $API_KEY . ':' . $signaturePresence,
        'channel_data' => $channelData
    ];
}

echo json_encode($response);

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?