您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman的AsyncTcpConnection类的reConnect 方法实现异步断线重连
发布时间:2021-12-04 23:49:17编辑:雪饮阅读()
reConnect 方法
void AsyncTcpConnection::reConnect(float $delay = 0)
重连。一般在onClose回调中调用,实现断线重连。
由于网络问题或者对方服务重启等原因导致连接断开,则可以通过调用此方法实现重连。
参数
$delay
延迟多久后执行重连。单位为秒,支持小数,可精确到毫秒。
如果不传或者值为0则代表立即重连。
最好传递参数让重连延迟执行,避免因为对端服务问题一直不可连导致本机cpu消耗过高。
返回值
无返回值
实例:
<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
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秒后重连
echo "\r\n";
var_dump("触发了重连操作!");
echo "\r\n";
$con->reConnect(1);
};
$con->connect();
};
Worker::runAll();
?>
实例运行:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 200 OK
x-amz-id-2: 3KCcMU5McMOErIUGu+edG8Ho1uwinLDkVOoFpyFMU87+mgMnDly0wr9sKnBviIH/fEUP1R8VdvY=
x-amz-request-id: NWP11QH3HN0TXAX1
Date: Sat, 04 Dec 2021 02:07:38 GMT
Last-Modified: Thu, 26 Aug 2021 03:35:42 GMT
ETag: "6d5a28f4c5e297e95a29988884c9e896"
Content-Type: text/html
Server: AmazonS3
Content-Length: 4413
Connection: close
string(24) "触发了重连操作!"
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 200 OK
x-amz-id-2: gCzMgsttP0yleGok+rWjwBIOBH2UlXkJcvmlTKXAmWyUd757sW9E9QnKfL8yddPx0MShAq9FYWs=
x-amz-request-id: H6SWK888S61DQ34E
Date: Sat, 04 Dec 2021 02:07:39 GMT
Last-Modified: Thu, 26 Aug 2021 03:35:42 GMT
ETag: "6d5a28f4c5e297e95a29988884c9e896"
Content-Type: text/html
Server: AmazonS3
Content-Length: 4413
Connection: close
string(24) "触发了重连操作!"
Sec-WebSocket-Accept not found. Header:
HTTP/1.1 200 OK
x-amz-id-2: dblAsmvOIBfu2d7tzK2wXZalhtHEd99RxlAwEwnabq3iE9JA0MO/FVukK2rMLBIzFzlZePImEyo=
x-amz-request-id: 2GF4M3ARTFX3FTX1
Date: Sat, 04 Dec 2021 02:07:40 GMT
Last-Modified: Thu, 26 Aug 2021 03:35:42 GMT
ETag: "6d5a28f4c5e297e95a29988884c9e896"
Content-Type: text/html
Server: AmazonS3
Content-Length: 4413
Connection: close
string(24) "触发了重连操作!"
^CWorkerman[test.php] stopping ...
Workerman[test.php] has been stopped
关键字词:workerman,AsyncTcpConnection,reConnect,断线重连
上一篇:workerman的AsyncTcpConnection类的connect 方法实现异步redis代理
下一篇:workerman的AsyncTcpConnection类的transport属性都利用实现https连接客户端
相关文章
- workerman的AsyncTcpConnection类的connect 方法实现
- workerman类TcpConnection的接口send
- workerman类TcpConnection的接口pipe通道实现流量控制
- workerman类TcpConnection的接口pauseRecv实现上传流
- workerman类TcpConnection的接口pauseRecv实现上传流
- workerman类TcpConnection的worker属性
- workerman类TcpConnection的id属性
- workerman类TcpConnection的protocol属性
- workerman类TcpConnection的回调属性onClose
- workerman类TcpConnection的回调属性onMessage