rxnet/socket

响应式X客户端和服务器套接字

0.2.1 2018-09-19 09:24 UTC

This package is auto-updated.

Last update: 2024-08-26 01:48:45 UTC


README

FOSSA Status

超薄ReactPHP套接字适配器,以引入响应式X风味。

客户端

低级套接字,连接到远程或抛出异常
然后按到达顺序回显接收到的数据

<?php
$connector = new \Rxnet\Socket\Connector($loop);
$options = [
    // See https://php.ac.cn/manual/en/context.socket.php for all tcp options
    'tcp'=> [
        'backlog' => 200,
        'so_reuseport' => true,
        'ipv6_v6only' => true
    ],
    // see https://php.ac.cn/manual/en/context.ssl.php for all ssl options
    'tls' => [
        'verify_peer' => false
    ]
];
$connector->connect('www.google.fr:80', $options)
    ->timeout(100)
    ->subscribe(
        function (\Rxnet\Socket\Connection $connection) use ($loop) {
            $connection
                ->subscribe(
                    function ($data) {
                        // Every chunk received will give onNext
                        var_dump($data);
                    },
                    function (\Exception $e) {
                        echo $e->getMessage();
                    },
                    function () {
                        echo 'completed';
                    }
                );
                $connection->write("GET /?gfe_rd=cr&dcr=0&ei=YWhsWsTDIZOm8wep_beACA HTTP/1.0\r\nHost: www.google.fr\r\n\r\n");
        }
    );

服务器

低级套接字服务器,将等待一个输入后说“ok”并关闭。

<?php

$server = new \Rxnet\Socket\Server($loop);

$server->listen('0.0.0.0:9999')
    ->subscribe(function(\Rxnet\Socket\Connection $connection) {
        $connection->subscribe(function($data) use($connection) {
            echo 'received '.$data." from ".$connection->getRemoteAddress()." \n";
            $connection->end('ok');
        });
        $connection->write('Hello their');
    });

管道

连接是一个可观察对象和一个观察者,您可以将一个连接订阅到另一个以管道数据。

许可协议

FOSSA Status