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

ThinkPHP6.0和GatewayWorker雙向通訊的問(wèn)題

lixiang

問(wèn)題描述

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

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

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

2248 2 0
2個(gè)回答

安靜角落

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

chen

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

  • lixiang 2023-08-31

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

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