具體的業(yè)務(wù)需求是這樣的:
開(kāi)發(fā)一個(gè)服務(wù)端,需要支持硬件的tcp長(zhǎng)連接,硬件連接到服務(wù)端之后回跟服務(wù)端進(jìn)行通信。
在web端實(shí)時(shí)監(jiān)控設(shè)備的在線狀態(tài)和數(shù)據(jù)上報(bào),并且能在web端下發(fā)指令給連接著服務(wù)端的硬件。
關(guān)于第一點(diǎn),用Gateway框架可以直接實(shí)現(xiàn)。但是關(guān)于第二點(diǎn)需求,我目前的做法是利用Workerman重新建立一個(gè)websocket的服務(wù)端,然后web連接上這個(gè)websocket的服務(wù)端,所有的跟硬件之間的通信都通過(guò)_AsyncTcpConnection_進(jìn)行通信,雖然勉強(qiáng)實(shí)現(xiàn)了功能,但是總覺(jué)得有點(diǎn)不太方便。有沒(méi)有更好的解決辦法?
我一般也會(huì)像你這樣做。
hello!我想麻煩問(wèn)下,Gateway框架下 start_gateway.php 可以有兩個(gè)嗎?比如我一個(gè)是tcp協(xié)議(start_gateway_tcp.php),另一個(gè)是websocket協(xié)議(start_gateway_websocket),然后端口設(shè)置成不同的,這樣就不用通過(guò)異步連接來(lái)通信了。不過(guò)我測(cè)試了一下是不行的,不知道理論上是不是可以?我看了文檔上說(shuō)支持多協(xié)議,不知道是不是我理解偏了。
和我項(xiàng)目需求差不多,我現(xiàn)在也是跑2個(gè)GW,一個(gè)是處理硬件數(shù)據(jù)上報(bào),一個(gè)websocket給WEB后臺(tái)推送設(shè)備狀態(tài),多協(xié)議沒(méi)問(wèn)題的
@591:大佬,我現(xiàn)在硬件可以和服務(wù)端進(jìn)行交互了,心跳檢測(cè)沒(méi)問(wèn)題了,可是服務(wù)器端如何主動(dòng)發(fā)送命令給客戶端呢,求解啊
我也是分開(kāi)文件,設(shè)備tcp與gatewayworker連接。然后網(wǎng)頁(yè)端用websocket與gatewayworker連接。正在測(cè)試中