Как автоматически переподключить клиента по реагирующему?

Я использую responsephp для создания клиента для сервера API. Но у меня есть проблема, когда мое соединение закрывается, независимо от причины, я не могу восстановить автоматически.

Не работает

$this->loop = \React\EventLoop\Factory::create();
$host = config('app.reactphp_receiver_host');
$port = config('app.reactphp_receiver_port');

$this->connector = new \React\Socket\Connector($this->loop);
$this->connector
->connect(sprintf('%s:%s', $host, $port))
->then(
function (\React\Socket\ConnectionInterface $conn)
{
$conn->on('data', function($data)
{

});

$conn->on('close', function()
{
echo "close\n";
$this->loop->addTimer(4.0, function () {
$this->connector
->connect('127.0.0.1:8061')
->then( function (\Exception $e)
{
echo $e;
});
});
});
});

$this->loop->run();

Исключение пусто.

0

Решение

Привет, член команды ReactPHP здесь. Затем метод Promise принимает два вызова. Первый — когда операция прошла успешно, а второй — когда происходит ошибка. Похоже, вы смешиваете оба в своем примере. Мое предложение будет использовать что-то вроде этого, где вы фиксируете ошибки и успехи, но также можете бесконечно переподключаться:

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

$this->connector = new \React\Socket\Connector($this->loop);

function connect()
{
$host = config('app.reactphp_receiver_host');
$port = config('app.reactphp_receiver_port');
$this->connector
->connect(sprintf('%s:%s', $host, $port))
->then(
function (\React\Socket\ConnectionInterface $conn) {
$conn->on('data', function($data) {
});
$conn->on('close', function() {
echo "close\n";
$this->loop->addTimer(4.0, function () {
$this->connect();
});
}, function ($error) {
echo (string)$error; // Replace with your way of handling errrors
}
);
}

$this->loop->run();
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector