2025年9月18日木曜日

JavaScript今さら入門(4)

 

今さらなんだけど、JavaScriptに挑戦してみる。JavaScriptでgRPC Clientを作ってみる試み。どうせならHTMLから実行したいし、結果をブラウザに表示したい。



HTMLに埋め込んだJavaScriptでgRPCしたんだから結果はConsoleじゃなくてブラウザに表示したくなるよね。
ってことで、JavaScript今さら入門(1)を見ながら書き直していく。

index.html
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <title>gRPC-Web Client</title>
  6. </head>
  7. <body>
  8.   <h1>gRPC-Web Client Example</h1>
  9.   <p>Greeter</p>
  10.   <input type="text" id="user" placeholder="user"><br>
  11.   <button type="button" id="greet">greet</button><br>
  12.   <div id="out"></div><br>
  13.   <script src="dist/bundle.js"></script>
  14. </body>
  15. </html>

src/client.js
  1. let out=document.getElementById('out');
  2. let user=document.getElementById('user');
  3. let button=document.getElementById('greet');
  4.  
  5. // 生成されたコード
  6. const {HelloRequest} = require('./gen/greet_pb.js');
  7. const {GreeterClient} = require('./gen/greet_grpc_web_pb.js');
  8.  
  9. // gRPC-Webサービスのエンドポイントを指定
  10. const client = new GreeterClient('http://localhost:5052', null, null);
  11.  
  12. function button_clicked(){
  13.   let user_value=user.value;
  14.  
  15.   // リクエストを作成
  16.   const request = new HelloRequest();
  17.   request.setName(user_value);
  18.  
  19.   // SayHelloメソッドを呼び出し
  20.   client.sayHello(request, {}, (err, response) => {
  21.     if (err) {
  22.       console.error('Error: ', err.message);
  23.       return;
  24.     }
  25.     let response_message=response.getMessage();
  26.     console.log('Greeting:', response_message);
  27.     out.textContent=response_message;
  28.   });
  29. }
  30.  
  31. button.addEventListener("click",button_clicked);

でけた
埋め込み用のコードを生成
npx webpack

ブラウザで読み込んでみる

で、なんか入力してボタンを押してみる

うまくいったー

0 件のコメント:

コメントを投稿