国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于Web推送到硬件與硬件返回數(shù)據(jù)推送到web的設(shè)計的問題

Syname

現(xiàn)在希望實現(xiàn)的兩個功能是,在web上通過點擊按鈕切換燈泡的開關(guān),與,燈泡的單片機硬件每隔幾秒會發(fā)送當(dāng)前電流量這一數(shù)據(jù)到服務(wù)器,數(shù)據(jù)在web上顯示出來。具體實現(xiàn)方法有點思路但并不是很清晰,希望大神指點一二。
設(shè)計與思路在下:
首先硬件會通過tcp協(xié)議連接到服務(wù)器上。
1.打開web后,web先建立與gatewayWorker連接的websocket,點擊按鈕會發(fā)送{'type':'onOrOff','op':'on'}類似這樣的一個json數(shù)據(jù),便會觸發(fā)Events文件里的onMessage,使用Gateway::sendToAll()發(fā)送到所有硬件上。這種方法可以嗎?

2.當(dāng)硬件發(fā)送數(shù)據(jù)到服務(wù)器后,觸發(fā)Events文件里的onMessage,目前的設(shè)想是將數(shù)據(jù)放入數(shù)據(jù)庫,web通過輪詢數(shù)據(jù)庫再顯示出來。還有另一個想法與疑問是,觸發(fā)onMessage時能不能通過gatewayWorker直接推送到web上呢?在建立websocket的時候,為web分配一個uid,硬件數(shù)據(jù)到了服務(wù)器后,Gateway::sendToUID()到web??梢赃@樣實現(xiàn)嗎?

希望大神能對我的思路指點指點,謝謝。

按鈕如下:

[attach]946[/attach]

3710 3 1
3個回答

Syname

因為web也需要接收到推送,時是不是用GatewayClient不合適?
我這樣的設(shè)計是不是需要開一個內(nèi)部推送的端口?具體協(xié)議怎么設(shè)置呢?

  • 暫無評論
Jeffrey

觸發(fā)onMessage時能不能通過gatewayWorker直接推送到web上呢?

顯然是可以的

與web通信肯定要建立 websocket 服務(wù)端,所以主要步驟可以這么做

建立一個websocket服務(wù)端
tcp服務(wù)端(也就是gatewayWorker)通過 AsyncTcpConnection 將消息推送到websocket服務(wù)端
websocket服務(wù)端接受到推送數(shù)據(jù)之后推送到與之連接的web端

核心就是 gatewayWorker 與 websocket 服務(wù)端的通信,要使用 AsyncTcpConnection 建立兩者的連接。

  • Syname 2018-03-01

    感謝回答!因為硬件是隔數(shù)秒就推送到gatewayWorker上一串?dāng)?shù)據(jù),請問我是要每收到一次數(shù)據(jù)就建立一次AsyncTcpConnection,進行send嗎?

maq

這樣做當(dāng)然是可以的,只要你確實是想用 web 上的一個開關(guān)控制_所有_燈泡。
你的思路是對的。具體的實現(xiàn)方法,樓上說的就可以。不過有一點,你一定要用 GatewayWorker 嗎?如果僅從你給出的應(yīng)用場景來看似乎是沒有必要的,那么其實還可以再簡單一些,如下:

在一個進程中開兩個 Worker,一個是 websocket,供 web 連接進來,一個是 tcp(其實應(yīng)該是 text 或者 frame 協(xié)議),供單片機連接進來。

  • Syname 2018-03-01

    感謝回答!因為gatewayWorker寫好了sendToUid與sendToAll這樣的函數(shù),所以感覺用起來方便些...

年代過于久遠,無法發(fā)表回答
??