用workerman的mqtt做为客户端,如何onClose或者onError的时候连另一台服务器

0

用workerman的mqtt做为客户端,mqtt服务端是集群,连接任何一台都可以接收数据,我的问题是,如何onClose或者onError的时候冲连另一台服务器。
即做到只要一台出问题,自动重连服务器队列里的任何一台。

已邀请:

six

赞同来自: youwuku

onClose 或者 onError 的时候,关闭当前mqtt连接,然后重新建立一个mqtt实例,去连新的ip。

youwuku

赞同来自:

新的ip需要 new 新的Client,要不然地址传不进来,而这时候就报 类重复加载错误。因为常驻内存的问题。

youwuku

赞同来自:

下面这段代码能实现上面的功能,测试过了,就不知道还有什么坑。


$worker->onWorkerStart = function(){
global $mqtt,$mqttBack;


$mqtt->count=5;

$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('logs/Test');
};

$mqtt->onMessage = function($topic, $content){
echo "topic:$topic content:$content\n";
};

$mqtt->onClose = function($mqtt)
{
global $mqttBack;

$mqttBack->connect();
};
$mqtt->connect();

//备用地址部分。

$mqttBack->count=5;
$mqttBack->onConnect = function($mqttBack) {
$mqttBack->subscribe('logs/Test');
};

$mqttBack->onMessage = function($topic, $content){
echo "topic:$topic content:$content\n";
};

$mqttBack->onClose = function($mqttBack)
{
global $mqtt;

$mqtt->connect();
};

};

要回复问题请先登录注册