检测 React PHP 客户端是否无法连接到服务器
Detecting if React PHP client cannot connect to server
如何检测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();
<?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');
看看 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
});
如何检测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();
<?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');
看看 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
});