gpt4 book ai didi

php - 如何在reactphp上自动重新连接客户端?

转载 作者:行者123 更新时间:2023-12-03 12:03:30 24 4
gpt4 key购买 nike

我正在使用reactphp为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();

异常为空。

最佳答案

嘿ReactPHP团队成员在这里。 Promise的then方法接受两个可调用对象。第一个用于操作成功的时间,第二个用于发生错误的时间。看起来您在示例中混用了两者。我的建议是使用这样的东西来捕获错误和成功,但也可以无限地重新连接:

$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();

关于php - 如何在reactphp上自动重新连接客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49705738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com