項(xiàng)目里有設(shè)備和用戶(hù),在和通道綁定的時(shí)候做了判斷是設(shè)備還是用戶(hù),然后用各自的ID綁定了通道ID,最終出現(xiàn)了一個(gè)ID重復(fù)的耦合,比如:設(shè)備ID是8,用戶(hù)ID也是8,這時(shí)候再通過(guò)Gateway::getClientIdByUid
去獲取通道ID的時(shí)候就不準(zhǔn)確了。
這時(shí)候需要把設(shè)備ID和用戶(hù)ID變成字符串來(lái)區(qū)分,比如:device-8
,user-8
,但是發(fā)現(xiàn)系統(tǒng)會(huì)出現(xiàn)異常,不停的執(zhí)行綁定操作,打印綁定結(jié)果確實(shí)綁定成功了,但是系統(tǒng)不正常
//將連接通道ID綁定到設(shè)備/用戶(hù),刪除認(rèn)證定時(shí)器
$client_name = "$client_type-$client_id";
Gateway::bindUid($connect_id, $client_name);
Log::info('綁定連接通道:' . $connect_id . '=>' . ($client_type == 'device' ? '設(shè)備ID ' : '用戶(hù)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ù)字,就沒(méi)有問(wèn)題,系統(tǒng)也正常
"workerman/gateway-worker": "3.0.8",
"workerman/gatewayclient": "3.0.8",
"workerman/workerman": "4.1"
你代碼bug啊,你找下為啥你前端一直發(fā)請(qǐng)求綁定。
代碼bug得自己查,別人沒(méi)代碼沒(méi)環(huán)境的沒(méi)法給你猜測(cè)
與前端無(wú)關(guān)吧,同樣的代碼,只是Gateway::bindUid
接口的參數(shù)類(lèi)型不同而已,又沒(méi)有循環(huán)綁定操作