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

Gateway默認(rèn)不支持http的問(wèn)題。

banice

手冊(cè)上寫Gateway是不支持http協(xié)議的。可不可自己在gateway的portocols下建一個(gè)類繼承自Worker去實(shí)現(xiàn)http協(xié)議,最后注冊(cè)到register的worker上?
或者還有別的什么解決方法?

我自己試了在創(chuàng)建一個(gè)基于http協(xié)議的gateway不同的端口,然后按端口處理業(yè)務(wù),但是我收不到http請(qǐng)求的數(shù)據(jù),可以發(fā)送數(shù)據(jù),但是get和post的數(shù)據(jù)都收不到。

手冊(cè)上是用gateway client去訪問(wèn)gateway的端口。上面的方法可不可行?

5129 1 0
1個(gè)回答

walkor 打賞

Gateway本身是支持http協(xié)議的,只是不建議使用。初始化Gateway 的時(shí)候指定http協(xié)議即可。
類似new Gateway('http://0.0.0.0:8080')

為什么不建議Gateway里使用http協(xié)議?
http 是請(qǐng)求響應(yīng)式的,只有客戶端發(fā)送了請(qǐng)求,服務(wù)端才能響應(yīng)。
所以當(dāng)一個(gè)http鏈接沒(méi)有發(fā)來(lái)請(qǐng)求前,服務(wù)端直接向這個(gè)鏈接發(fā)送數(shù)據(jù)是無(wú)效的。
如果客戶端發(fā)來(lái)請(qǐng)求,服務(wù)端進(jìn)行了回應(yīng),在這個(gè)客戶端沒(méi)有再次發(fā)送請(qǐng)求前,服務(wù)端向其發(fā)送的數(shù)據(jù)都是無(wú)效的。
也就如果用http協(xié)議,服務(wù)端很難做到隨時(shí)向客戶端推送數(shù)據(jù),除非是長(zhǎng)輪詢。

Gateway更適合實(shí)時(shí)雙向通訊的,Gateway可以任意時(shí)刻向客戶端推送數(shù)據(jù),http協(xié)議放到Gateway上用并不合適。

即時(shí)使用http協(xié)議,Gateway里面也不是用$_POST $_GET來(lái)獲取數(shù)據(jù),Gateway數(shù)據(jù)都是統(tǒng)一通過(guò)onMessage的參數(shù)傳遞進(jìn)去的,http協(xié)議也是一樣。

public static function onMessage($client_id, $data) {
    // 這里是客戶端發(fā)來(lái)的數(shù)據(jù),包括get post server cookie 等數(shù)據(jù)
    var_dump($data);
}

最后不建議在Gateway里使用http協(xié)議,除非你對(duì)http機(jī)制很熟悉。

  • banice 2017-04-15

    嗯,我用文檔里的GatewayClient實(shí)現(xiàn)了對(duì)下位機(jī)的控制,但是Client只是共享了Gateway的數(shù)據(jù)。我能在Client里單獨(dú)設(shè)置心跳之類的嗎?我通過(guò)Client發(fā)送命令給下位機(jī),但是如果下位機(jī)并未收到命令,也就是不會(huì)做任何的響應(yīng),這時(shí)候client要怎么判斷自己到底有沒(méi)有發(fā)送成功?

    我現(xiàn)在的想法是為每個(gè)下位機(jī)的session里通過(guò)各種下位機(jī)的狀態(tài)和命令狀態(tài)來(lái)做判斷。還是在Client里做定時(shí)器?但是文檔里Client好像是只能調(diào)用Gateway的函數(shù)。

  • walkor 2017-04-17

    發(fā)送前可以通過(guò)onLine接口判斷客戶端是否在線。在線的可以基本認(rèn)為數(shù)據(jù)可以發(fā)送成功。
    最保險(xiǎn)的機(jī)制是每次發(fā)送數(shù)據(jù)寫一條記錄到數(shù)據(jù)庫(kù),有個(gè)字段標(biāo)記消息未讀??蛻舳耸盏较⒑蠼o服務(wù)端一個(gè)反饋,服務(wù)端收到反饋標(biāo)記對(duì)應(yīng)消息已讀。

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??