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

ThinkPHP6.0和GatewayWorker雙向通訊的問題

lixiang

問題描述

目前,在用ThinkPHP6.0做VUE前后端分離的接口開發(fā)。項(xiàng)目開發(fā)過程中消息推送,目前用的前端定時請求接口這邊獲取,輪詢比較耗費(fèi)性能。所以,看到WorkerMan可以用來做一些websocket相關(guān)的推送服務(wù),再看到GatewayWorker框架手冊,還是有些不太明白的地方。

為此你搜索到了哪些方案及不適用的原因

問題一:前端那邊通過TP6接口登錄后會獲取一個包含UID的token信息,然后需要與GatewayWorker建立websocket連接,這個UID之前有一些離線消息需要推送,我的想法是GatewayWorker通過HTTP請求的方式獲取TP6離線用戶的接口數(shù)據(jù)或者GatewayWorker通過MySQL直接獲取離線數(shù)據(jù),也就是GatewayWorker和TP6數(shù)據(jù)共享是Redis或MySQL;
問題二:前端通過TP6接口產(chǎn)生了新的消息,TP6通過GatewayClient提供的接口給前端那邊推送消息,但是需要clientId,TP6這邊只知道UID,不知道clientId;而GatewayWorker那邊通過前端建立連接產(chǎn)生的TOKEN解析出UID,然后通過UID和clientId進(jìn)行綁定,而且也沒法告知TP6,這樣綁定關(guān)系只能放到Redis或MySQL里面;GatewayWorker里面需要處理部分的邏輯,與Redis或MySQL進(jìn)行交互;
所以,請教大家,TP6或其他PHP框架與GatewayWorker雙向通訊的方式。

2107 2 0
2個回答

安靜角落

你前端連接GatewayWorker的時候GatewayWorker直接返回一個clientId,然后你把這個clientId發(fā)給tp后臺,由tp進(jìn)行uid->clientId綁定;
GatewayWorker不建議進(jìn)行任何業(yè)務(wù)處理;離線消息你在tp后臺收到clientId綁定后直接處理業(yè)務(wù)把通知消息發(fā)給GatewayWorker由GatewayWorker進(jìn)行通知

chen

客戶端連接上websocket后,發(fā)送token過來,服務(wù)端解析token拿到uid,然后bindUid
同時加一個定時器,連接上多長時間后沒鑒權(quán)成功的就斷開連接

  • lixiang 2023-08-31

    其實(shí),核心問題是tp和gatewayWorker雙向通信的問題,客戶端連上websocket后,有沒有更好的方法websocket通知tp那邊給UID發(fā)送消息

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