2

如何检测到 React PHP 客户端无法与服务器连接?else()我希望我在底部显示的虚构方法。我是否只需要等待一段合理的时间,如果没有on data事件发生,它就没有连接。

<?php

require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();

$dnsResolverFactory = new React\Dns\Resolver\Factory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$connector = new React\SocketClient\Connector($loop, $dns);

$connector->create('127.0.0.1', 1337)->then(function (React\Stream\Stream $stream) {
    $buffer = '';
    $stream->on('data', function ($data, $stream) use (&$buffer) {
    });
})
/*
->else(function () {
    //no connection?
});
*/

$loop->run();
4

2 回答 2

1

看看 ReactPHP 的PromiseInterface. 要么使用第二个回调,then要么使用otherwise,这正是你的人为else

$connector->create('127.0.0.1', 1337)->then(function (React\Stream\Stream $stream) {
    $buffer = '';
    $stream->on('data', function ($data, $stream) use (&$buffer) {
        // ...
    });
}, function (Throwable $error) {
    // handle error here
});
于 2017-05-14T20:58:59.870 回答
0
<?php

require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();

$dnsResolverFactory = new React\Dns\Resolver\Factory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$connector = new React\SocketClient\Connector($loop, $dns);

$gotConnected=false;

$connector->create('127.0.0.1', 1337)->then(function (React\Stream\Stream $stream) use(&$gotConnected) {
    $gotConnected=true;
    $buffer = '';
    $stream->on('data', function ($data, $stream) use (&$buffer) {
    });
});

$loop->run();

echo($gotConnected?'Got connected':'Did not get connected');
于 2017-05-13T22:48:38.030 回答