function reConnect(float $delay = 0)

(ต้องการ Workerman เวอร์ชัน >= 3.3.5)

การเชื่อมต่อใหม่ เรียกใช้จากคลาส onClose เพื่อทำการเชื่อมต่อใหม่หลังจากการตัดการเชื่อมต่อ

หากการเชื่อมต่อถูกตัดเชื่อมเพราะปัญหาเครือข่ายหรือบริการที่ตรงข้ามรีสตาร์ต ก็สามารถเรียกใช้เมธอดนี้เพื่อเชื่อมต่อใหม่ได้

พารามิเตอร์

$delay

ระยะเวลาการล่าช้าก่อนที่จะเริ่มการเชื่อมต่อใหม่ ในหน่วยเป็นวินาที รองรับทศนิยม และสามารถระบุได้ถึงมิลลิวินาที

หากไม่ระบุค่าหรือค่าเป็น 0 จะหมายถึงเริ่มการเชื่อมต่อใหม่ทันที

การระบุพารามิเตอร์เพื่อล่าช้าการเชื่อมต่อใหม่จะทำให้หลีกเลี่ยงการใช้งาน CPU สูงเนื่องจากไม่สามารถเชื่อมต่อได้เนื่องจากปัญหาของบริการอีกเครื่อง

ค่าส่งคืน

ไม่มีการคืนค่า

ตัวอย่าง

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) {
        // หากการเชื่อมต่อถูกตัด ให้ทำการเชื่อมต่อใหม่ในอีก 1 วินาที
        $con->reConnect(1);
    };
    $con->connect();
};

Worker::runAll();

ข้อควรระวัง
เมื่อทำการเชื่อมต่อใหม่สำเร็จแล้ว เมธอด onConnect ของ $con จะถูกเรียกอีกครั้ง (หากถูกตั้งค่า) ในบางครั้งเราอาจต้องการให้เมธอด onConnect ทำงานเพียงครั้งเดียวเท่านั้น และไม่ต้องทำการเชื่อมต่อใหม่ ดูตัวอย่างด้านล่าง

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) {
        // หากการเชื่อมต่อถูกตัด ให้ทำการเชื่อมต่อใหม่ในอีก 1 วินาที
        $con->reConnect(1);
    };
    $con->connect();
};

Worker::runAll();