turbo-timer / socket.io-redis-emitter-php
Socket.IO Redis Emitter implementation in PHP 8 without any Redis dependencies
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:package
Requires
- php: >=8.3
- rybakit/msgpack: ^0.9.1
Requires (Dev)
- phpunit/phpunit: ^11
README
A Redis Emitter implementation for PHP >=8.3. This package is not dependent on a specific Redis interface.
Installation
composer require turbo-timer/socket.io-redis-emitter-php
Usage
Setup:
$redis = new Redis(...) // some Redis implementation. $onPublish = function (string $channel, string $message) use ($redis): void { $redis->publish($channel, $message); } $emitter = new \TurboTimer\SocketIO\Emitter($onPublish);
Emitting events:
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', data: ['a' => 1, 'b' => 'c'], );
Examples
Most of the following functions allow you to exclude specific rooms.
Emit event to specific rooms
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', rooms: ['my_room'] );
Emit event to every room, except one
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', exceptRooms: ['my_room'] );
Make socket join a room
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->joinRooms( roomsToJoin: ['my_new_room'], rooms: ['socket_id_or_room'], );
Make socket leave a room
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->leaveRooms( roomsToLeave: ['my_old_room'], rooms: ['socket_id_or_room'], );
Disconnect sockets
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->disconnectSockets( rooms: ['socket_id_or_room'], );
Emit server-side messages
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emitToServers( data: ['server_time' => time()] );