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