現(xiàn)在要做硬件交互這一塊? ?服務(wù)端與硬件通過websocket?通信? 用戶端與服務(wù)端也要用websocket?通信,那么該怎樣設(shè)計 ,一個設(shè)備會關(guān)聯(lián)到多個用戶? 當(dāng)某個用戶通過web?點擊某個操作? 然后服務(wù)端通知設(shè)備進行某一項操作?然后再返回結(jié)果給web?的操作用戶
?
?
用workerman的gatewayWorker框架來做硬件通訊比較容易,而且還支持分布式部署。
?
每個設(shè)備肯定都有一個設(shè)備id,設(shè)備發(fā)送自己的設(shè)備id給gatewayWorker,gatewayWoker利用Gateway::bindUid($client_id, '設(shè)備id');綁定。這樣就可以通過 Gateway::sendToUid('設(shè)備id', '給設(shè)備發(fā)的數(shù)據(jù)'); 給設(shè)備發(fā)送數(shù)據(jù)了。
?
同理每個用戶也有個用戶id,一樣的流程通過Gateway::bindUid($client_id, '用戶id');綁定,然后就可以通過 Gateway::sendToUid('用戶id', '數(shù)據(jù)'); 給任意用戶發(fā)送數(shù)據(jù)了。
?
用戶通過web點擊某個操作,就用websocket通知gatewayWorker,gatewayWoker通過Gateway::sendToUid('設(shè)備id', '數(shù)據(jù)');給設(shè)備發(fā)送數(shù)據(jù)。設(shè)備通過websocket返回結(jié)果給gatewayWorker,gatewayWorker通過?Gateway::sendToUid('用戶id', '數(shù)據(jù)'); 給用戶web界面返回結(jié)果。
?
基本上就這個流程了。