turbo-timer/socket.io-redis-emitter-php

PHP 8 无Redis依赖的Socket.IO Redis Emitter实现

1.0.0 2024-02-10 21:27 UTC

This package is auto-updated.

Last update: 2024-09-11 13:10:49 UTC


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()]
);