2 回答

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
1、PC端通過ip端口連上GatewayWorker(GatewayWorker不用將client_id發(fā)到PC端)
2、PC端把自己的唯一標(biāo)識假設(shè)是uid發(fā)給GatewayWorker
3、GatewayWorker利用Gateway::bindUid($client_id, $uid)將$client_id對應(yīng)的socket與uid綁定
4、綁定后設(shè)置一個$_SESSION['uid']=$uid 記錄$client_id對應(yīng)uid
5、從此GatewayWorker要給某個PC端發(fā)送消息時直接用Gateway::sendToUid($uid, '消息內(nèi)容')即可發(fā)送,不再關(guān)注client_id
6、GatewayWorker收到PC端的消息后可以利用$_SESSION['uid']來判別是哪個PC端發(fā)來的消息
7、剩下的就是自己的業(yè)務(wù)邏輯了
以上$uid是客戶端的唯一標(biāo)識,用來區(qū)分不同PC端的。

TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊
可以再服務(wù)端和數(shù)據(jù)庫之間加一層redis來緩存一部分流量。
目測你這種應(yīng)用的PC端可能會頻繁的連接,端口,再連接這種操作,建議用redis來緩存client_id和channel等數(shù)據(jù)。
- 2 回答
- 0 關(guān)注
- 680 瀏覽
添加回答
舉報