reConnect Metodu
void AsyncTcpConnection::reConnect(float $delay = 0)
(Workerman sürümü >=3.3.5 gereklidir)
Yeniden bağlanma işlemi. Genellikle onClose geri çağrısında çağrılır, kesinti sonrası yeniden bağlantı sağlar.
Bağlantı, ağ sorunları veya karşı tarafın servisini yeniden başlatması gibi nedenlerle kesilirse, bu yöntemi çağırarak yeniden bağlantı kurabilirsiniz.
Parametreler
$delay
Yeniden bağlanmanın ne kadar süre sonra gerçekleştirileceği. Birim saniyedir, ondalık destekler, milisaniyeye kadar hassasiyet sunar.
Geçersiz bir değer veya 0 verilirse, bu hemen yeniden bağlanmak anlamına gelir.
Yeniden bağlanma süresinin geciktirilmesi için bir parametre geçmek en iyisidir, aksi takdirde karşı tarafın servis sorununun sürekli bağlantı kurulamaması nedeniyle yerel CPU'nun fazla yüklenmesine neden olabilir.
Dönüş Değeri
Dönüş değeri yoktur.
Örnek
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function($worker)
{
$con = new AsyncTcpConnection('ws://echo.websocket.org:80');
$con->onConnect = function(AsyncTcpConnection $con) {
$con->send('hello');
};
$con->onMessage = function(AsyncTcpConnection $con, $msg) {
echo "recv $msg\n";
};
$con->onClose = function(AsyncTcpConnection $con) {
// Bağlantı kesildiğinde, 1 saniye sonra yeniden bağlan
$con->reConnect(1);
};
$con->connect();
};
Worker::runAll();
Dikkat
reconnect yöntemi başarılı bir şekilde yeniden bağlandığında, $con'un onConnect metodu tekrar çağrılır (eğer ayarlanmışsa). Bazen onConnect metodunun sadece bir kez çalışmasını, yeniden bağlandığında tekrar çalışmamasını isteriz, aşağıdaki örneğe bakın:
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function($worker)
{
$con = new AsyncTcpConnection('ws://echo.websocket.org:80');
$con->onConnect = function(AsyncTcpConnection $con) {
static $is_first_connect = true;
if (!$is_first_connect) return;
$is_first_connect = false;
$con->send('hello');
};
$con->onMessage = function(AsyncTcpConnection $con, $msg) {
echo "recv $msg\n";
};
$con->onClose = function(AsyncTcpConnection $con) {
// Bağlantı kesildiğinde, 1 saniye sonra yeniden bağlan
$con->reConnect(1);
};
$con->connect();
};
Worker::runAll();