reConnect Methode

void AsyncTcpConnection::reConnect(float $delay = 0)

(erfordert Workerman Version >= 3.3.5)

Stellen Sie die Verbindung wieder her. Normalerweise wird dies im onClose Callback aufgerufen, um eine automatische Wiederverbindung zu ermöglichen.

Wenn die Verbindung aufgrund von Netzwerkproblemen oder einem Neustart des Gegenservers unterbrochen wird, kann diese Methode verwendet werden, um die Verbindung erneut herzustellen.

Parameter

$delay

Wie lange die Wiederverbindung verzögert erfolgen soll. Die Einheit ist Sekunden, unterstützt Dezimalzahlen, kann bis zu Millisekunden genau sein.

Wenn kein Wert übergeben wird oder der Wert 0 ist, bedeutet dies eine sofortige Wiederverbindung.

Es wird empfohlen, einen Parameter zu übergeben, um die Wiederverbindung verzögert durchzuführen, um zu vermeiden, dass die CPU der lokalen Maschine beim ständigen Verbindungsversuch aufgrund von Problemen mit dem Gegenserver übermäßig belastet wird.

Rückgabewert

Kein Rückgabewert

Beispiel

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) {
        // Wenn die Verbindung getrennt wird, stelle nach 1 Sekunde die Verbindung wieder her
        $con->reConnect(1);
    };
    $con->connect();
};

Worker::runAll();

Achtung
Wenn die Methode reconnect erfolgreich eine Wiederverbindung herstellt, wird die $con's onConnect Methode erneut aufgerufen (falls sie gesetzt ist). Manchmal möchten wir, dass die onConnect Methode nur einmal ausgeführt wird und nicht bei einer Wiederverbindung, siehe folgendes Beispiel:

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) {
        // Wenn die Verbindung getrennt wird, stelle nach 1 Sekunde die Verbindung wieder her
        $con->reConnect(1);
    };
    $con->connect();
};

Worker::runAll();