關(guān)于client_id
-
client_id固定為20個(gè)字符的字符串,用來全局標(biāo)記一個(gè)socket連接,每個(gè)客戶端連接都會(huì)被分配一個(gè)全局唯一的client_id。
-
client_id不能自定義,由GatewayWorker自動(dòng)生成。
-
如果client_id對(duì)應(yīng)的客戶端連接斷開了,那么這個(gè)client_id也就失效了。當(dāng)這個(gè)客戶端再次連接到Gateway時(shí),將會(huì)獲得一個(gè)新的client_id。也就是說client_id和客戶端的socket連接生命周期是一致的。
-
除非gateway進(jìn)程退出重啟,否則client_id一旦被使用過,將不會(huì)被再次使用。也就是說client_id在整個(gè)gateway進(jìn)程生命周期內(nèi)是不會(huì)重復(fù)的,即使分布式部署也不會(huì)重復(fù)。
-
業(yè)務(wù)不應(yīng)該存儲(chǔ)client_id到數(shù)據(jù)庫或redis存儲(chǔ)上,因?yàn)樗桥R時(shí)id,重啟GatewayWorker后client_id會(huì)重新計(jì)數(shù),導(dǎo)致業(yè)務(wù)問題。
-
推薦使用Gateway::bindUid($client_id, $uid) Gateway::joinGrop($client_id, $group_id) 等接口將client_id綁定到uid或者gid上,通過Gateway::sendToUid($uid, $data) 或 Gateway::sendToGroup($gid, $data)來發(fā)送數(shù)據(jù)。