多臺硬件設(shè)備要與服務(wù)器進(jìn)行tcp連接,請問是用什么方法
1)服務(wù)器打開多個端口監(jiān)聽,一個硬件連接一個服務(wù)器端口,但是如何同時監(jiān)聽多個端口,并獨(dú)立發(fā)送數(shù)據(jù)?
2)服務(wù)器只開一個端口,所有硬件都連接同一個端口,請問如何區(qū)別這些設(shè)備?
還有其他的方法,敬請賜教。
以我的理解,服務(wù)端只開一個端口就好了。
我是用的GatewayWorker
客戶端連接上后發(fā)送一個登錄信息,表明客戶端是哪個id(硬件都有一個設(shè)備id的吧),Events::onMessage里面驗證設(shè)備是否合法,如果合法就設(shè)置個$_SESSION = 'xxxx'?。這樣這個設(shè)備以后發(fā)消息通過$_SESSION 就能知道是哪個設(shè)備發(fā)的信息了。如果沒有$_SESSION 則說明沒登錄過。
onMessage里驗證完后最好用bindUid($client_id,設(shè)備id )綁定下,這樣就可以在任何時候通過設(shè)備id給設(shè)備發(fā)信息了Gateway::sendToUid(設(shè)備id,$msg);
抱歉,說的有點(diǎn)亂...