sejator / ws-server-php
PHP SDK untuk publish event ke WebSocket Server melalui HTTP dengan HMAC SHA256 signature.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/sejator/ws-server-php
Requires
- php: >=7.1
Requires (Dev)
- vlucas/phpdotenv: ^5.6
This package is auto-updated.
Last update: 2026-01-20 12:58:21 UTC
README
PHP SDK untuk mengirim event (publish) ke WebSocket Server melalui HTTP webhook dengan autentikasi HMAC SHA256 Signature.
Cocok untuk
- Backend PHP (Laravel, CodeIgniter, native PHP)
- Trigger event realtime (order, chat, notifikasi)
- Komunikasi server-to-server (backend → WebSocket server)
📦 Instalasi
Install via Composer:
composer require sejator/ws-server-php
Struktur SDK
- Namespace utama:
Sejator\WebSocket - Class publik utama:
Sejator\WebSocket\WsServer
Internal: - Signature generator - HTTP client - Payload validator - Exception handler
🚀 Contoh Penggunaan
<?php require 'vendor/autoload.php'; use Sejator\WebSocket\WsServer; // Inisialisasi $ws = new WsServer( 'APP_KEY', // App key 'APP_SECRET', // App secret 'https://ws.example.com' // URL WebSocket server ); // Publish event ke channel $response = $ws->publish( 'orders', // nama channel 'order.created', // nama event [ 'order_id' => 123, 'amount' => 50000, 'status' => 'pending' ] ); print_r($response);
📡 Cara Kerja Publish Event
1️⃣ Payload yang dikirim ke WebSocket server
{
"channel": "orders",
"event": "order.created",
"data": {
"order_id": 123
}
}
2️⃣ Signature HMAC SHA256 dibuat otomatis
HMAC_SHA256(APP_KEY.TIMESTAMP, APP_SECRET)
3️⃣ HTTP Request
POST /api/events/{APP_KEY}
Content-Type: application/json
X-Signature: <signature>
X-Timestamp: <unix_timestamp>
4️⃣ Server memverifikasi
- Signature
- Timestamp
🧾 Method Reference
publish
publish(string $channel, string $event, array|string $data): array
| Parameter | Tipe | Keterangan |
|---|---|---|
| channel | string | Nama channel |
| event | string | Nama event |
| data | array / string | Payload event |
❗ Catatan
data harus berupa array atau string.
⚠️ Aturan Channel & Event
Channel
Contoh:
ordersprivate-user-123presence-room-general
Event
WAJIB menggunakan titik (.) sebagai pemisah
Contoh valid:
order.createdmessage.sent
Contoh tidak valid:
order createdorder_createdws:order.created
🔗 Implementasi (SDK untuk @sejator/ws-server)
@sejator/ws-server merupakan WebSocket Server yang berfungsi sebagai jembatan komunikasi realtime antara Publisher dan Subscriber.
SDK PHP ini berperan sebagai Publisher, sedangkan
@sejator/ws-client berperan sebagai Subscriber.
Keduanya mengikuti protokol, event, dan format payload yang sama, sehingga:
✨ Keunggulan
- ✅ Plug & Play (tanpa konfigurasi rumit)
- ✅ Auto kompatibel dengan:
- Channel system
- Private channel authentication
- Heartbeat & pong
- Reconnect strategy
🚫 Batasan
- ❌ Tidak ditujukan untuk WebSocket server lain.
⚠️ PENTING
Pastikan backend WebSocket kamu menggunakan @sejator/ws-server, karena:
- Event internal seperti:
connect_successauth_failedpong- dll
- Struktur autentikasi:
APP_KEY:signature - Endpoint default:
/ws
Semuanya bergantung pada implementasi server tersebut.
🔄 Arsitektur Publisher ↔ Server ↔ Client
Application Backend (PHP)
│
│ sejator/ws-server-php
│ (publish event)
▼
WebSocket Server
│
│ @sejator/ws-server
▼
Browser / Frontend
│
│ @sejator/ws-client
▼
Realtime Event Listener
⚙️ Alur Kerja End-to-End
- Backend PHP mem-publish event menggunakan SDK ini
@sejator/ws-servermemverifikasi:- Signature
- Timestamp
- Server meneruskan event ke channel terkait
- Client (
@sejator/ws-client) menerima event secara realtime - Event dipetakan langsung ke listener frontend
🔐 Keamanan
- Signature dibuat otomatis menggunakan HMAC SHA256
- WebSocket server memverifikasi:
- Signature
- Timestamp
✅ Rekomendasi
- Simpan
APP_KEY&APP_SECRETdi ENV - Gunakan HTTPS
- Batasi timestamp drift (±5 menit)