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
Requires
- php: >=8.2
Suggests
- kislayphp/config: Dynamic configuration management
- kislayphp/core: HTTP/HTTPS server foundation
- kislayphp/discovery: Service discovery integration
- kislayphp/gateway: API gateway with real-time features
- kislayphp/metrics: Real-time metrics monitoring
- kislayphp/queue: Message queuing integration
Provides
README
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
- ๐ Full Detailed Docs Site: https://skelves.com/docs
- ๐งช Local Docs Route:
http://localhost:5180/docs
๐๏ธ 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
- ๐ Documentation
- ๐ Issue Tracker
- ๐ฌ Discussions
- ๐ง Security Issues
๐ 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
- https://github.com/KislayPHP/config
- https://github.com/KislayPHP/metrics
- https://github.com/KislayPHP/queue
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