目前,在用ThinkPHP6.0做VUE前后端分離的接口開發(fā)。項目開發(fā)過程中消息推送,目前用的前端定時請求接口這邊獲取,輪詢比較耗費性能。所以,看到WorkerMan可以用來做一些websocket相關的推送服務,再看到GatewayWorker框架手冊,還是有些不太明白的地方。
問題一:前端那邊通過TP6接口登錄后會獲取一個包含UID的token信息,然后需要與GatewayWorker建立websocket連接,這個UID之前有一些離線消息需要推送,我的想法是GatewayWorker通過HTTP請求的方式獲取TP6離線用戶的接口數(shù)據(jù)或者GatewayWorker通過MySQL直接獲取離線數(shù)據(jù),也就是GatewayWorker和TP6數(shù)據(jù)共享是Redis或MySQL;
問題二:前端通過TP6接口產生了新的消息,TP6通過GatewayClient提供的接口給前端那邊推送消息,但是需要clientId,TP6這邊只知道UID,不知道clientId;而GatewayWorker那邊通過前端建立連接產生的TOKEN解析出UID,然后通過UID和clientId進行綁定,而且也沒法告知TP6,這樣綁定關系只能放到Redis或MySQL里面;GatewayWorker里面需要處理部分的邏輯,與Redis或MySQL進行交互;
所以,請教大家,TP6或其他PHP框架與GatewayWorker雙向通訊的方式。
你前端連接GatewayWorker的時候GatewayWorker直接返回一個clientId,然后你把這個clientId發(fā)給tp后臺,由tp進行uid->clientId綁定;
GatewayWorker不建議進行任何業(yè)務處理;離線消息你在tp后臺收到clientId綁定后直接處理業(yè)務把通知消息發(fā)給GatewayWorker由GatewayWorker進行通知