質問:
gRPC を利用してサーバーからデータをプッシュできますか?クライアントに?サーバー上に無限の応答ストリームがあり、クライアント上でこのストリームから常に読み取る終わりのないルーチンがあるパブリッシュ/サブスクライブ パターンを考えてみましょう。
// Service proto service Service { rpc RegularChanges (Void) returns (stream Change) {} } // Server implementation func (self *MyServiceImpl) RegularChanges(in *pb.Void, stream pb.Service_RegularChangesServer) error { for { stream.Send(&pb.Change{Name:"toto", Description:"status changed"}) time.Sleep(d) } return nil } // Client for { change, err := streamChanges.Recv() if err != nil { // Handle error } else { // Process change } }
答え:
gRPC はそのような用途向けに設計されており、クライアントとサーバー間のパブリッシュ/サブスクライブ パターンを容易にします。ただし、次のような特定の考慮事項に対処する必要があります。
以上がgRPC は Pub/Sub パターンでサーバーからクライアントにデータをストリーミングできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。