現(xiàn)在項(xiàng)目需要用到兩個(gè)協(xié)議,一個(gè)是http,一個(gè)是自定義的json,因此有兩個(gè)gateway,一個(gè)負(fù)責(zé)監(jiān)聽http,一個(gè)負(fù)責(zé)監(jiān)聽json,而我的需求是,當(dāng)http有發(fā)送數(shù)據(jù)時(shí),將這個(gè)數(shù)據(jù)轉(zhuǎn)為json,然后轉(zhuǎn)發(fā)到連接json gateway的客戶端,但現(xiàn)在發(fā)現(xiàn)http發(fā)過來的數(shù)據(jù)會(huì)調(diào)用http的gateway,轉(zhuǎn)發(fā)給json客戶端時(shí)發(fā)送時(shí)client_id顯示為空,我感覺是這個(gè)client_id是保存在json的gateway那里的,所以http的gateway不能獲取到,請(qǐng)問怎么讓http的gateway監(jiān)聽到數(shù)據(jù)時(shí)能夠轉(zhuǎn)發(fā)到j(luò)son上的客戶端連接??
gateway不用監(jiān)聽http端口。
網(wǎng)頁(yè)將數(shù)據(jù)post任意mvc框架(tp yii等),mvc框架里里用gatewayClient將要推送的數(shù)據(jù)推給客戶端。
參見手冊(cè) http://wtbis.cn/gatewaydoc/advanced/push.html
我這邊是這樣一個(gè)情況,后臺(tái)采用gatewayworker,創(chuàng)建一個(gè)http服務(wù)一個(gè)json服務(wù),如下所示
$ sudo php start.php start
Workerman start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.3.9 PHP version:5.3.3
------------------------ WORKERS -------------------------------
user worker listen processes status
root YourAppBusinessWorker none 4
root AppGateway http://192.168.1.145:8484 4
root Register text://192.168.1.145:1237 1
root YourAppBusinessWorker none 4
root YourAppGateway json://192.168.1.145:8282 4
root Register text://192.168.1.145:1238 1
http負(fù)責(zé)獲取手機(jī)app的請(qǐng)求,然后要把請(qǐng)求發(fā)給json那邊。我知道json客戶端client_id,但是在http的onMessage函數(shù)中卻沒法發(fā)出去?
app請(qǐng)求http,http處理完之后發(fā)給指定的車載端(以json格式協(xié)議),通過Gateway::sendToClient('c0a801910fa100000001', "ok");(c0a801910fa100000001為車載端client_id),但是車載端收不到發(fā)送的數(shù)據(jù)。在同一個(gè)協(xié)議下可以發(fā)送給任何連接上的客戶端,但是在兩個(gè)協(xié)議沒法發(fā)送了,怎么辦呢?
已經(jīng)解決了,如下所示,把http和json放在了一個(gè)服務(wù)里面,而不是起兩個(gè)實(shí)例。然后在Events.php的onMessage函數(shù)中通過 if($_SERVER == 8484),寫http邏輯;if($_SERVER == 8282) 寫json邏輯。
$ sudo php start.php start
Workerman start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.3.9 PHP version:5.3.3
------------------------ WORKERS -------------------------------
user worker listen processes status
root YourAppBusinessWorker none 4
root YourAppGateway json://192.168.1.145:8282 4
root HttpGateway http://192.168.1.145:8484 4
root Register text://192.168.1.145:1238 1
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.