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