reConnect विधि
void AsyncTcpConnection::reConnect(float $delay = 0)
(आवश्यक Workerman संस्करण >=3.3.5)
पुन: कनेक्ट करें। सामान्यतः onClose कॉलबैक में इसे कॉल किया जाता है,断线重连实现 करता है।
यदि नेटवर्क समस्या या दूसरी सेवा के फिर से शुरू होने जैसे कारणों से कनेक्शन टूट जाता है, तो इस विधि को कॉल करके पुन: कनेक्ट किया जा सकता है।
पैरामीटर
$delay
कितने समय बाद पुन: कनेक्ट करना है। इकाई सेकंड है, दशमलव का समर्थन करता है, milliseconds तक सटीकता।
यदि नहीं दिया गया या मान 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();