Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1.87 KB

react-adapter.md

File metadata and controls

58 lines (42 loc) · 1.87 KB
notice title description image permalink source layout
This file is imported and can be edited at https://github.com/amphp/react-adapter/blob/master/README.md
ReactPHP Compatibility
Learn how to use any ReactPHP library and make it compatible with Amp.
undraw/undraw_logistics.svg
/react-adapter
docs

Stable License

amphp/react-adapter makes any ReactPHP library compatible with Amp v2.

{:.note}

If you're using AMPHP v3, have a look at revolt/event-loop-adapter-react instead.

Installation

This package can be installed as a Composer dependency.

composer require amphp/react-adapter

Usage

Everywhere where a ReactPHP library requires an instance of LoopInterface, you pass ReactAdapter::get() to run the ReactPHP library on Amp's event loop.

<?php

require 'vendor/autoload.php';

use Amp\Loop;
use Amp\ReactAdapter\ReactAdapter;

Loop::run(function () {
    $app = function ($request, $response) {
        $response->writeHead(200, array('Content-Type' => 'text/plain'));
        $response->end("Hello World\n");
    };

    $socket = new React\Socket\Server(ReactAdapter::get());
    $http = new React\Http\Server($socket, ReactAdapter::get());

    $http->on('request', $app);
    echo "Server running at http://127.0.0.1:1337\n";

    $socket->listen(1337);
});

You can also use the adapter to run ReactPHP apps on an Amp event loop implementation without relying on Amp's global event loop.

$loop = new Amp\ReactAdapter\ReactAdapter((new Amp\Loop\DriverFactory)->create());