This library is a RxPHP wrapper for the ReactPHP's Http-client library. It allows you to make asynchronous http calls and emit the results through an RxPHP observable.
It uses the Voryx event-loop which behaves like the Javascript event-loop. ie. You don't need to start it.
Install dependencies using composer
$ php composer.phar require "rx/http"
$source = \Rx\React\Http::get('https://www.example.com/');
$source->subscribe(
function ($data) {
echo $data, PHP_EOL;
},
function (\Exception $e) {
echo $e->getMessage(), PHP_EOL;
},
function () {
echo "completed", PHP_EOL;
}
);
$postData = json_encode(["test" => "data"]);
$headers = ['Content-Type' => 'application/json'];
$source = \Rx\React\Http::post('https://www.example.com/', $postData, $headers);
$source->subscribe(
function ($data) {
echo $data, PHP_EOL;
},
function (\Exception $e) {
echo $e->getMessage(), PHP_EOL;
},
function () {
echo "completed", PHP_EOL;
}
);
$imageTypes = ["png", "jpeg", "webp"];
$images = \Rx\Observable::fromArray($imageTypes)
->flatMap(function ($type) {
return \Rx\React\Http::get("http://httpbin.org/image/{$type}")->map(function ($image) use ($type) {
return [$type => $image];
});
});
$images->subscribe(
function ($data) {
echo "Got Image: ", array_keys($data)[0], PHP_EOL;
},
function (\Exception $e) {
echo $e->getMessage(), PHP_EOL;
},
function () {
echo "completed", PHP_EOL;
}
);
For more information, see the examples.