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