問(wèn)題描述:我做了一個(gè)這樣的項(xiàng)目,這個(gè)項(xiàng)目目前已經(jīng)做到了這兩個(gè)部分:1.單片機(jī)控制傳感器采集數(shù)據(jù),并利用網(wǎng)關(guān)模塊(通過(guò)互聯(lián)網(wǎng))將數(shù)據(jù)發(fā)送到云服務(wù)器。 2. 用戶可以在網(wǎng)站上查看上傳到服務(wù)器的數(shù)據(jù)。?
現(xiàn)在我想讓用戶通過(guò)網(wǎng)站,比如在網(wǎng)站上點(diǎn)擊某臺(tái)設(shè)備對(duì)應(yīng)的“采集數(shù)據(jù)”這個(gè)按鈕 ,那么下面對(duì)應(yīng)的單片機(jī),進(jìn)行數(shù)據(jù)采集。要實(shí)現(xiàn)這個(gè)功能,那服務(wù)器端應(yīng)該在收到網(wǎng)站上用戶請(qǐng)求的時(shí)候(通過(guò)用戶和服務(wù)器之間的連接),找到相對(duì)應(yīng)單片機(jī)的client_id,通過(guò)這個(gè)id發(fā)送數(shù)據(jù)給單片機(jī),讓單片機(jī)采集數(shù)據(jù)。
那么如何才能在網(wǎng)站和服務(wù)器這個(gè)連接中(onMessage中),提取另外一個(gè)連接中單片機(jī)的client_id呢?
我考慮了一下 單片機(jī)連接到gatewayworker以后用全局變量保存這個(gè)單片機(jī)的client_id。之后用戶有請(qǐng)求就直接通過(guò)這個(gè)id向單片機(jī)發(fā)送數(shù)據(jù)。但是如果這個(gè)單片機(jī)每次連接到服務(wù)器 client_id都不一樣,那么這個(gè)辦法就不行。
所以請(qǐng)問(wèn)有其他可行方案嗎?
設(shè)備連接上來(lái)后把自己的設(shè)備id報(bào)上來(lái),然后gatewayworker的Events.php?onMessage里通過(guò) Gateway::bindUid(client_id, '設(shè)備id');,然后就可以在任意時(shí)候調(diào)用?Gateway::sendToUid('設(shè)備id', '數(shù)據(jù)');給對(duì)應(yīng)設(shè)備發(fā)數(shù)據(jù)了