turbo-timer / socket.io-redis-emitter-php
PHP 8 无Redis依赖的Socket.IO Redis Emitter实现
1.0.0
2024-02-10 21:27 UTC
Requires
- php: >=8.3
- rybakit/msgpack: ^0.9.1
Requires (Dev)
- phpunit/phpunit: ^11
README
PHP >=8.3 的Redis Emitter实现。此包不依赖于特定的Redis接口。
安装
composer require turbo-timer/socket.io-redis-emitter-php
用法
设置
$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);
触发事件
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', data: ['a' => 1, 'b' => 'c'], );
示例
以下大部分函数允许您排除特定的房间。
向特定房间触发事件
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', rooms: ['my_room'] );
向所有房间触发事件(除一个外)
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emit( event: 'my_custom_event', exceptRooms: ['my_room'] );
使套接字加入房间
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->joinRooms( roomsToJoin: ['my_new_room'], rooms: ['socket_id_or_room'], );
使套接字离开房间
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->leaveRooms( roomsToLeave: ['my_old_room'], rooms: ['socket_id_or_room'], );
断开套接字连接
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->disconnectSockets( rooms: ['socket_id_or_room'], );
触发服务器端消息
/** @var \TurboTimer\SocketIO\Emitter $emitter **/ $emitter->emitToServers( data: ['server_time' => time()] );