關(guān)于client_id
-
client_id固定為20個字符的字符串,用來全局標(biāo)記一個socket連接,每個客戶端連接都會被分配一個全局唯一的client_id。
-
client_id不能自定義,由GatewayWorker自動生成。
-
如果client_id對應(yīng)的客戶端連接斷開了,那么這個client_id也就失效了。當(dāng)這個客戶端再次連接到Gateway時,將會獲得一個新的client_id。也就是說client_id和客戶端的socket連接生命周期是一致的。
-
除非gateway進(jìn)程退出重啟,否則client_id一旦被使用過,將不會被再次使用。也就是說client_id在整個gateway進(jìn)程生命周期內(nèi)是不會重復(fù)的,即使分布式部署也不會重復(fù)。
-
業(yè)務(wù)不應(yīng)該存儲client_id到數(shù)據(jù)庫或redis存儲上,因?yàn)樗桥R時id,重啟GatewayWorker后client_id會重新計數(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ù)。