国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于用戶ID與workerman自動生成的client_id映射

coolbosyen

用戶登錄成功后,我將用戶uid(唯一的)與client_id存放在一張表中(映射表)。當(dāng)該用戶再次登錄時,按workerman運行機(jī)制,客戶端連接到服務(wù)端,它又會自動生成一個client_id,當(dāng)用戶再次登錄時,發(fā)給原來的client_id的信息就不能發(fā)送給該用戶了?,F(xiàn)在問題就是能否用映射表中的client_id替換掉再次登錄workerman生成的client_id?還有client_id是在哪一步生成的?

25558 4 0
4個回答

walkor 打賞

workerman中得client_id無法自定義,每次客戶端連接workerman的那一時刻會生成一個新的全局唯一的clent_id。

如果你要加入uid的概念,可以做映射表,uid<->client_id,通訊的時候使用uid通訊,封裝一個類似Gateway::sendToUid($uid, $message)的接口,接口內(nèi)部實現(xiàn)就是通過uid查找client_id,然后調(diào)用workerman自己的Gateway::sendToClient($client_id, $message)發(fā)送

每次用戶登錄時把uid與client_id的映射關(guān)系寫入數(shù)據(jù)庫,用戶退出時通過client_id把映射記錄刪除。uid與client_id可以一對多(也就是同一個用戶支持多個客戶端同時登錄),也可以強(qiáng)制一對一(同一個用戶只能登錄一個客戶端)

  • 暫無評論
xmfail

已按此流程完成了client_id與client_name的對應(yīng)關(guān)系,并成功實現(xiàn)通過name來發(fā)送消息;

  • 暫無評論
walkor 打賞
  • dreamboycx 2015-12-22

    用戶每次的client_id都一樣嗎?不一樣的話,怎么做映射的?一樣的話,client_id生成機(jī)制是什么?

  • walkor 2015-12-22

    每個連接client_id不一樣,一樣的話就亂套了,因為沒有數(shù)據(jù)交互無法確定一個新的socket連接是屬于某個client_id。client_id生成機(jī)制類似自增機(jī)制。bindUid一般是客戶端連接上來后發(fā)一個驗證包,驗證自己是哪個uid,然后和當(dāng)前client_id綁定。

annydaniel

判斷用戶是否在線可以使用$mes = Gateway::getClientIdByUid($uid); 根據(jù)用戶uid可以實時查出用戶的clientid

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??