Skip to content

apinator-io/sdk-php

Repository files navigation

apinator/apinator-php

Packagist Version License: MIT CI

PHP server SDK for Apinator — trigger real-time events, authenticate channels, and verify webhooks.

Features

  • Trigger events on public, private, and presence channels
  • Channel authentication (HMAC-SHA256)
  • Webhook signature verification
  • Channel introspection (list channels, get channel info)
  • Zero external dependencies — PHP 8.1+ stdlib only
  • Laravel integration guide included

Installation

composer require apinator/apinator-php

Quick Start

use Apinator\Apinator;

$client = new Apinator(
    appId: 'your-app-id',
    key: 'your-app-key',
    secret: 'your-app-secret',
    cluster: 'eu', // or 'us'
);

// Trigger an event
$client->trigger(
    name: 'new-message',
    data: json_encode(['text' => 'Hello!']),
    channel: 'chat-room',
);

Channel Authentication

For private and presence channels, your backend must provide an auth endpoint:

use Apinator\Apinator;

$client = new Apinator(
    appId: 'your-app-id',
    key: 'your-app-key',
    secret: 'your-app-secret',
    cluster: 'eu', // or 'us'
);

// In your auth route handler:
$socketId = $_POST['socket_id'];
$channelName = $_POST['channel_name'];

$auth = $client->authenticateChannel($socketId, $channelName);

header('Content-Type: application/json');
echo json_encode($auth);

For presence channels, include channel data:

$channelData = json_encode([
    'user_id' => $currentUser->id,
    'user_info' => ['name' => $currentUser->name],
]);

$auth = $client->authenticateChannel($socketId, $channelName, $channelData);

Webhook Verification

use Apinator\Apinator;

$client = new Apinator(
    appId: 'your-app-id',
    key: 'your-app-key',
    secret: 'your-webhook-secret',
    cluster: 'eu', // or 'us'
);

$headers = getallheaders();
$body = file_get_contents('php://input');

try {
    $client->verifyWebhook($headers, $body, maxAge: 300);
    // Webhook is valid — process the payload
    $payload = json_decode($body, true);
} catch (\Apinator\Errors\ValidationException $e) {
    http_response_code(401);
    echo 'Invalid webhook';
}

Channel Introspection

// List all channels
$channels = $client->getChannels();

// Filter by prefix
$presenceChannels = $client->getChannels(prefix: 'presence-');

// Get info about a specific channel
$info = $client->getChannel('presence-chat');

API Reference

See docs/api-reference.md for the full API.

Laravel Integration

See docs/laravel.md for a step-by-step Laravel integration guide.

Links

License

MIT — see LICENSE.

About

PHP server SDK for Apinator — real-time WebSocket channels for web apps

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages