現(xiàn)在我是用Gateway/workerman的text協(xié)議的,我該怎樣影射生成的client_id到我需要uid呢?前面我看過(guò)說(shuō)建立一個(gè)表是client_id與uid的關(guān)系,但是我怎樣得到當(dāng)前我連接對(duì)象的uid呢?
客戶端連接后需要發(fā)送自己的用戶uid標(biāo)識(shí),例如uid+密碼,或者一個(gè)網(wǎng)頁(yè)的session_id等等,workerman根據(jù)標(biāo)識(shí)檢查用戶是否合法,如果合法得到uid,將uid放置session中,例如$_SESSION=xxx; 這樣以后這個(gè)客戶端再發(fā)來(lái)數(shù)據(jù),就可以根據(jù)$_SESSION判斷當(dāng)前用戶是否合法,也就可以得到當(dāng)前用戶的uid了。
如果需要uid到client_id的映射,可以將對(duì)應(yīng)關(guān)系存儲(chǔ)在數(shù)據(jù)庫(kù)或者memcache、redis存儲(chǔ)中。驗(yàn)證用戶合法設(shè)置 $_SESSION=xxx; 時(shí)將 client_id uid 的映射關(guān)系存入數(shù)據(jù)庫(kù),當(dāng)onClose時(shí)通過(guò)client_id刪除對(duì)應(yīng)關(guān)系。uid與client_id可以一對(duì)多(一個(gè)用戶可以登錄多個(gè)客戶端pc、網(wǎng)頁(yè)、app等),也可以強(qiáng)制一對(duì)一,每個(gè)用戶只能用一個(gè)客戶端登錄。
GatewayWorker 增加了bindUid 和 sendToUid方法,可以直接使用,參見(jiàn)手冊(cè)
http://workerman.net/gatewaydoc/gateway-worker-development/bind-uid.html
http://workerman.net/gatewaydoc/gateway-worker-development/send-to-uid.html