The project allows you as a developer to listen to Redis pubsub using async instead of blocking I/O using PHP. This is done by utilizing predis/predis-async
under the hood.
To install through composer, simply put the following in your composer.json
file:
{
"require": {
"laravie/streaming": "^3.0"
}
}
And then run composer install
from the terminal.
Above installation can also be simplify by using the following command:
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();