kislayphp/eventbus

High-performance C++ PHP extension providing realtime event protocol-compatible realtime communication for PHP microservices

Installs: 2

Dependents: 0

Suggesters: 6

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Shell

Type:php-ext

Ext name:ext-kislayphp_eventbus

pkg:composer/kislayphp/eventbus

v0.1.2 2026-02-15 13:14 UTC

This package is auto-updated.

Last update: 2026-02-22 08:43:46 UTC


README

PHP Version License Build Status codecov

A high-performance C++ PHP extension providing realtime event protocol-compatible realtime communication for building interactive applications and microservices. Perfect for PHP ecosystem integration and modern microservices architecture.

Primary runtime namespace is Kislay\EventBus (legacy KislayPHP\EventBus aliases are kept for compatibility). For service-to-service event patterns, see SERVICE_COMMUNICATION.md and service_communication.php.

โšก Key Features

  • ๐Ÿš€ High Performance: Real-time messaging with minimal latency
  • ๐Ÿ”Œ realtime event protocol Compatible: Full realtime event protocol v4 and Engine.IO support
  • ๐ŸŒ Multiple Transports: WebSocket, HTTP long-polling, and Server-Sent Events
  • ๐Ÿ  Room Management: Namespaces and rooms for organized messaging
  • ๐Ÿ“ก Broadcasting: Efficient event fan-out to multiple clients
  • ๐Ÿ”ง Configurable: Environment-based configuration and INI settings
  • ๐Ÿ“Š Monitoring: Connection tracking and performance metrics
  • ๐Ÿ”„ PHP Ecosystem: Seamless integration with PHP ecosystem and frameworks
  • ๐ŸŒ Microservices Architecture: Designed for distributed PHP applications

๐Ÿ“ฆ Installation

Via PIE (Recommended)

pie install kislayphp/eventbus

Add to your php.ini:

extension=kislayphp_eventbus.so

Manual Build

git clone https://github.com/KislayPHP/eventbus.git
cd eventbus
phpize
./configure
make
sudo make install

container

FROM php:8.2-cli

๐Ÿš€ Quick Start

Server Setup

<?php

// Create EventBus server
$eventbus = new KislayEventBus();

// Configure server
$eventbus->setOption('max_connections', 1000);
$eventbus->setOption('ping_interval', 30);

// Handle connections
$eventbus->on('connection', function($socket) {
    echo "Client connected: {$socket->id}\n";

    // Handle custom events
    $socket->on('chat message', function($data) use ($socket) {
        echo "Message from {$socket->id}: {$data['message']}\n";

        // Broadcast to all clients in room
        $socket->to('general')->emit('chat message', $data);
    });

    // Handle room joining
    $socket->on('join room', function($room) use ($socket) {
        $socket->join($room);
        $socket->emit('joined', ['room' => $room]);
    });
});

// Start server
echo "EventBus server running on http://localhost:3000\n";
$eventbus->listen('0.0.0.0', 3000);

Client Usage (JavaScript)

const socket = new WebSocket('ws://localhost:3000/events/?transport=websocket');

socket.addEventListener('open', () => {
    console.log('Connected to EventBus server');
    socket.send(JSON.stringify({ type: 'join room', room: 'general' }));
    socket.send(JSON.stringify({
        type: 'chat message',
        message: 'Hello from client!',
        timestamp: Date.now()
    }));
});

socket.addEventListener('message', (event) => {
    console.log('Received:', event.data);
});

socket.addEventListener('close', () => {
    console.log('Disconnected from server');
});

๐Ÿ“š Documentation

๐Ÿ“– Complete Documentation - API reference, configuration, examples, and best practices

๐Ÿ—๏ธ Architecture

KislayPHP EventBus implements efficient real-time communication:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   WebSocket     โ”‚    โ”‚   HTTP Long     โ”‚
โ”‚   Transport     โ”‚    โ”‚   Polling       โ”‚
โ”‚                 โ”‚    โ”‚                 โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚    โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Event Bus   โ”‚ โ”‚    โ”‚ โ”‚ Event Bus   โ”‚ โ”‚
โ”‚ โ”‚ Engine      โ”‚ โ”‚    โ”‚ โ”‚ Engine      โ”‚ โ”‚
โ”‚ โ”‚ (C++)       โ”‚ โ”‚    โ”‚ โ”‚ (C++)       โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚    โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                       โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
            PHP Integration

๐ŸŽฏ Use Cases

  • Real-time Chat: Instant messaging applications
  • Live Dashboards: Real-time data visualization
  • Notifications: Push notifications and alerts
  • Collaborative Editing: Live document collaboration
  • Gaming: Real-time multiplayer games
  • IoT Applications: Real-time sensor data streaming
  • Microservices: Event-driven inter-service communication

๐Ÿ“Š Performance

Connection Benchmark:
==================
Concurrent Connections: 1,000
Message Throughput:    50,000 msg/sec
Average Latency:       2.1 ms
Memory Usage:          45 MB
CPU Usage:             8.2%

๐Ÿ”ง Configuration

php.ini Settings

; EventBus configuration
kislayphp.eventbus.max_connections = 1000
kislayphp.eventbus.ping_interval = 30
kislayphp.eventbus.ping_timeout = 60
kislayphp.eventbus.max_payload_size = 1048576

; Transport settings
kislayphp.eventbus.enable_websocket = 1
kislayphp.eventbus.enable_polling = 1
kislayphp.eventbus.polling_timeout = 20

Environment Variables

export KISLAYPHP_EVENTBUS_MAX_CONNECTIONS=1000
export KISLAYPHP_EVENTBUS_PING_INTERVAL=30
export KISLAYPHP_EVENTBUS_ENABLE_WEBSOCKET=1

๐Ÿงช Testing

# Run unit tests
php run-tests.php

# Test with a JavaScript WebSocket client
cd tests/
node test_client.js

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

๐Ÿ“„ License

Licensed under the Apache License 2.0.

๐Ÿ†˜ Support

๐Ÿ“ˆ Roadmap

  • Realtime protocol v5 support
  • Binary message support
  • KV store adapter for clustering
  • Message persistence
  • Advanced authentication middleware

๐Ÿ™ Acknowledgments

  • realtime event protocol: Real-time communication protocol
  • Engine.IO: Transport layer implementation
  • PHP: Zend API for extension development

Built with โค๏ธ for real-time PHP applications

Installation

Via PIE

pie install kislayphp/eventbus

Then add to your php.ini:

extension=kislayphp_eventbus.so

Manual Build

phpize
./configure --enable-kislayphp_eventbus
make

Run Locally

cd /path/to/eventbus
php -d extension=modules/kislay_socket.so example.php

Example

<?php
extension_loaded('kislayphp_eventbus') or die('kislayphp_eventbus not loaded');

$io = new KislayPHP\EventBus\Server();

$io->on('connection', function ($socket) use ($io) {
    $socket->join('room-1');
    $socket->emit('welcome', ['id' => $socket->id()]);
});

$io->on('message', function ($socket, $payload) {
    $socket->emitTo('room-1', 'message', $payload);
});

$io->on('binary', function ($socket, $payload) {
    $socket->emit('binary', $payload);
});

$io->listen('0.0.0.0', 8090, '/realtime-protocol/');
// This call blocks; stop with Ctrl+C.
?>

SEO Keywords

PHP, microservices, PHP ecosystem, PHP extension, C++ PHP extension, realtime event protocol PHP, WebSocket PHP, real-time PHP, PHP event bus, PHP messaging, PHP namespaces, PHP rooms, PHP broadcasting, interactive PHP applications, PHP microservices communication