1、網(wǎng)站頁(yè)面建立與GatewayWorker的websocket連接
2、GatewayWorker發(fā)現(xiàn)有頁(yè)面發(fā)起連接時(shí),將對(duì)應(yīng)連接的client_id發(fā)給網(wǎng)站頁(yè)面
3、網(wǎng)站頁(yè)面收到client_id后觸發(fā)一個(gè)ajax請(qǐng)求(假設(shè)是bind.php)將client_id發(fā)到mvc后端
4、mvc后端bind.php收到client_id后利用GatewayClient調(diào)用Gateway::bindUid($client_id, $uid)將client_id與當(dāng)前uid(用戶(hù)id或者客戶(hù)端唯一標(biāo)識(shí))綁定。如果有群組、群發(fā)功能,也可以利用Gateway::joinGroup($client_id, $group_id)將client_id加入到對(duì)應(yīng)分組
5、頁(yè)面發(fā)起的所有請(qǐng)求都直接post/get到mvc框架統(tǒng)一處理,包括發(fā)送消息
6、mvc框架處理業(yè)務(wù)過(guò)程中需要向某個(gè)uid或者某個(gè)群組發(fā)送數(shù)據(jù)時(shí),直接調(diào)用GatewayClient的接口Gateway::sendToUid Gateway::sendToGroup 等發(fā)送即可。
上面步驟已經(jīng)完成,使用Gateway::bindUid($client_id, $uid);也可以發(fā)送成功。
接下來(lái)我想使用Timer定時(shí)器根據(jù)前端用戶(hù)傳來(lái)的參數(shù)從數(shù)據(jù)庫(kù)讀取相應(yīng)數(shù)據(jù)定時(shí)發(fā)送,該如何實(shí)現(xiàn),麻煩指教一下。 mca后端貌似不能直接使用Timer?
直接通過(guò) Gatewayworker 綁定用戶(hù)和群組就可以了,為什么還要通過(guò)其它框架?在你打開(kāi)頁(yè)面的時(shí)候就可以從你的 web 服務(wù)器(也就是你說(shuō)的其它框架那里)獲取對(duì)應(yīng)的用戶(hù)資料,直接發(fā)給 Gatewayworker 就行,自己定義好 $message,例如 $message 可以是一個(gè) json 字符串,通過(guò) auth 字段驗(yàn)證,bindUid 字段綁定,sendToUid 字段獲取數(shù)據(jù)進(jìn)行發(fā)送。在 onWorkerStart 那里設(shè)置個(gè)定時(shí)器,當(dāng)接收到發(fā)送指令時(shí)就查詢(xún)數(shù)據(jù)進(jìn)行發(fā)送。
以上只是大概思路。
感謝您的回答,可能我描述得不太清楚, 我想實(shí)現(xiàn)的流程是這樣:前端用戶(hù)進(jìn)入某個(gè)商品A頁(yè)面后與Gatewayworker建立鏈接,請(qǐng)教的是接下去如何使用定時(shí)器定時(shí)給用戶(hù)發(fā)送商品A【如果進(jìn)入的是商品B就發(fā)商品B】的一些數(shù)據(jù)(數(shù)據(jù)通過(guò)數(shù)據(jù)庫(kù)讀取或者讀取緩存)
@7404:一樣道理啊,你進(jìn)入頁(yè)面之后就可以從 web 服務(wù)器獲取到商品信息,你將 uid 和 商品 id 一起發(fā)到 gatewayworker 不就得了,自己用 composer 在 gatewayworker 引入數(shù)據(jù)庫(kù)操作庫(kù),然后通過(guò)定時(shí)器查詢(xún)數(shù)據(jù)發(fā)送
有些開(kāi)發(fā)者習(xí)慣了tp寫(xiě)業(yè)務(wù)。
需求描述的有點(diǎn)粗糙。
把定時(shí)任務(wù)(包括發(fā)送時(shí)間)存在數(shù)據(jù)庫(kù)里,用workerman開(kāi)一個(gè)進(jìn)程,定時(shí)(比如每秒)http訪問(wèn)tp的一個(gè)地址,tp里讀數(shù)據(jù)庫(kù)找到到了時(shí)間的定時(shí)任務(wù),然后執(zhí)行。
感謝您的回答,可能我描述得不太清楚, 我想實(shí)現(xiàn)的流程是這樣:前端用戶(hù)進(jìn)入某個(gè)商品A頁(yè)面后與Gatewayworker建立鏈接,請(qǐng)教的是接下去如何使用定時(shí)器定時(shí)給用戶(hù)發(fā)送商品A【如果進(jìn)入的是商品B就發(fā)商品B】的一些數(shù)據(jù)(數(shù)據(jù)通過(guò)數(shù)據(jù)庫(kù)讀取或者讀取緩存)