rxnet / socket
响应式X客户端和服务器套接字
0.2.1
2018-09-19 09:24 UTC
Requires
- react/socket: ^1.0.0
- reactivex/rxphp: ^2.0
- voryx/event-loop: ^3.0 || ^2.0
This package is auto-updated.
Last update: 2024-08-26 01:48:45 UTC
README
超薄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'); });
管道
连接是一个可观察对象和一个观察者,您可以将一个连接订阅到另一个以管道数据。