用workerman的mqtt做為客戶端,mqtt服務(wù)端是集群,連接任何一臺都可以接收數(shù)據(jù),我的問題是,如何onClose或者onError的時候沖連另一臺服務(wù)器。
即做到只要一臺出問題,自動重連服務(wù)器隊列里的任何一臺。
新的ip需要 new 新的Client,要不然地址傳不進(jìn)來,而這時候就報 類重復(fù)加載錯誤。因為常駐內(nèi)存的問題。
$mqtt = new Client($adress, $connArr);
$mqtt->count=5;
$mqtt->onClose = function($mqtt)
{
$mqtt->close();
$adress='xxx';
$connArr=array(
'username' => 'xxxx',
'password' => 'xxxx',
'debug' => true
);
$mqttBack = new Client($adress, $connArr);
};
下面這段代碼能實現(xiàn)上面的功能,測試過了,就不知道還有什么坑。
$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();
};
};