iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

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

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

  • 分享至 

  • xImage
  •  

昨天我們做完了server多發的部分,今天要把Client端給做起來,請一樣在client的資料夾中新增一個client03,並且寫上:

public static void main(String[] args) {
    //設計好連線資訊
    String host = "localhost";
    int port = 5000;
    //通訊管道建立
    ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(host,port).usePlaintext().build();

    //判斷是否有連線成功
    if (managedChannel != null && !managedChannel.isShutdown())
        System.out.println(" channel build success !! " + host + ":" + port);
        
    IronManServiceGrpc.IronManServiceBlockingStub ironManServiceBlockingStub = IronManServiceGrpc.newBlockingStub(managedChannel);

//TODO
        
}

前面的部分一樣是要透過連線設定以及確認是否有連線成功,然後使用同步函數newBlockingStub()進行連線,緊接著要給予的是製作request的部分:

    //準備request並封裝
    IronManProto.IronManRequest01.Builder builder = IronManProto.IronManRequest01.newBuilder();
    builder.setName("Amy");
    builder.setAge("28");
    IronManProto.IronManRequest01 ironManRequest01 = builder.build();
    
    //使用迭代器接收資料
    Iterator<IronManProto.IronManResponse01> ironManResponse01Iterator = ironManServiceBlockingStub.client2Servers(ironManRequest01);
    while(ironManResponse01Iterator.hasNext()){
        IronManProto.IronManResponse01 ironManResponse01 = ironManResponse01Iterator.next();
        System.out.println("我是收到的response: " + ironManResponse01.getResult());
    }
    
    //關閉連線
    managedChannel.shutdown();

注意接收response的部分,我們接收多個來自server的內容,因此我們先定義好要接收的資料型態,在這邊使用迭代器來接收資料。

這樣一來,我們就完成了發送一組request後,可以獲得多組response的server-client端組合了。
接下來,我們啟動server跟client端實際運作看看吧!

先啟動server端預備,再使用client端發送request,首先server會先收到request:
https://ithelp.ithome.com.tw/upload/images/20230920/20147417j1iB2mP3vF.jpg

當server接收到一組request後,server便開始執行迴圈,發送多個response給client端:
https://ithelp.ithome.com.tw/upload/images/20230920/20147417gFIWOXMoCF.jpg

client端會以每秒一個response的方式接收到server傳過來的資料,當收到資料時我們就完成整個client對server多發的實作了。


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

尚未有邦友留言

立即登入留言