reConnect 메소드
void AsyncTcpConnection::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();
주의
재연결 성공 후, $con의 onConnect 메소드가 다시 호출됩니다(설정된 경우). 때로는 재연결 시 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();