laravie/streaming

PHP的Redis异步流

v3.1.0 2020-02-06 04:10 UTC

This package is auto-updated.

Last update: 2024-08-28 15:28:51 UTC


README

该项目允许您作为开发人员使用PHP异步监听Redis pubsub,而不是使用阻塞I/O。这是通过在内部使用 predis/predis-async 来实现的。

tests Latest Stable Version Total Downloads Latest Unstable Version License Coverage Status

安装

要通过composer安装,只需在您的composer.json文件中添加以下内容

{
    "require": {
        "laravie/streaming": "^3.0"
    }
}

然后从终端运行composer install

快速安装

上述安装也可以通过以下命令简化

composer require "laravie/streaming=^3.0"

示例

<?php

$eventLoop = React\EventLoop\Factory::create();

$chat = new class implements Laravie\Streaming\Listener {
    /**
     * @return array<int, string>
     */
    public function subscribedChannels(): array {
        return ['topic:*'];
    }
    
    /**
     * @param  \Predis\Async\Client  $redis  
     * @return void
     */
    public function onConnected($redis) {
        echo "Connected to redis!";
    }

    /**
     * @param  \Predis\Async\Client  $redis  
     * @return void
     */
    public function onSubscribed($redis) {
        echo "Subscribed to channel `topic:*`!";
    }
    
    /**
     * Trigger on emitted listener.
     *
     * @param  object  $event
     * @param  object  $pubsub
     *
     * @return void
     */
    public function onEmitted($event, $pubsub) {
        // PUBLISH topic:laravel "Hello world"
        
        # DESCRIBE $event
        #
        # {
        #   "kind": "pmessage",
        #   "pattern": "topic:*",
        #   "channel": "topic:laravel",
        #   "payload": "Hello world"
        # }
    }
}

$client = new Laravie\Streaming\Client(
    ['host' => '127.0.0.1', 'port' => 6379], $eventLoop
);

$client->connect($chat);

$eventLoop->run();