iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

gRPC通訊框架認識與實作系列 第 22

gRPC通訊框架認識與實作【Day 22】

  • 分享至 

  • xImage
  •  

昨天講到,我們要使用streamObserver的樣板程式來監聽server端的response,所以我們就來看看這個樣板程式要怎麼製作吧!!
因為我們透過樣板程式來監聽server,因此我們要使用streamObserver的泛型,設計成request的格式,所以我們就在昨天留下來的TODO寫上:

StreamObserver<IronManProto.IronManRequest01> request01StreamObserver = ironManServiceStub.clients2Server()

透過監聽server回傳的資料,讓我們得知現在server到底回傳什麼給client端,然後再加上我們的樣板程式在clients2server裡面:

new StreamObserver<IronManProto.IronManResponse01>() {
    @Override
    public void onNext(IronManProto.IronManResponse01 value) {
        System.out.println("我接收到server的回傳結果: " + value.getResult());
    }

    @Override
    public void onError(Throwable t) {

    }

    @Override
    public void onCompleted() {
        System.out.println("回傳結束");
    }
});

直接在clients2server加入樣板程式,透過這個樣板程式來監聽server端的回傳結果,並且在onNext()加上接收結果,在onCompleted()加上回傳結束的訊息提示。
這樣,我們整個stream client的程式就大功告成了,我們可以試試看把server跟client端都起來試試看結果。
我們先來看看server端收到的訊息:

https://ithelp.ithome.com.tw/upload/images/20230927/20147417rt8cJxauLf.png

確實每隔一秒鐘就收到一組訊息,再來看看client端:

https://ithelp.ithome.com.tw/upload/images/20230927/20147417dLgxc1WWU0.png

Client也在所有的資料都傳遞結束後,順利監聽到server回傳的onCompleted()標籤,最後印出回傳結束的內容。
這樣我們就完成了client多發對server單發的內容啦!!


上一篇
gRPC通訊框架認識與實作【Day 21】
下一篇
gRPC通訊框架認識與實作【Day 23】
系列文
gRPC通訊框架認識與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言