項目里有設(shè)備和用戶,在和通道綁定的時候做了判斷是設(shè)備還是用戶,然后用各自的ID綁定了通道ID,最終出現(xiàn)了一個ID重復(fù)的耦合,比如:設(shè)備ID是8,用戶ID也是8,這時候再通過Gateway::getClientIdByUid
去獲取通道ID的時候就不準確了。
這時候需要把設(shè)備ID和用戶ID變成字符串來區(qū)分,比如:device-8
,user-8
,但是發(fā)現(xiàn)系統(tǒng)會出現(xiàn)異常,不停的執(zhí)行綁定操作,打印綁定結(jié)果確實綁定成功了,但是系統(tǒng)不正常
//將連接通道ID綁定到設(shè)備/用戶,刪除認證定時器
$client_name = "$client_type-$client_id";
Gateway::bindUid($connect_id, $client_name);
Log::info('綁定連接通道:' . $connect_id . '=>' . ($client_type == 'device' ? '設(shè)備ID ' : '用戶ID ') . $client_id);
Log::info($connect_id . '=>' . $client_name);
$client_list = Gateway::getClientIdByUid($client_name);
Log::info(implode(',', $client_list));
Timer::del($_SESSION['auth_timer_id']);
只要把uid參數(shù)改成數(shù)字,就沒有問題,系統(tǒng)也正常
"workerman/gateway-worker": "3.0.8",
"workerman/gatewayclient": "3.0.8",
"workerman/workerman": "4.1"