我正在为SSL套接字上的双向流创建Java库(无法重新使用gRPC / HTTP2流客户端)。
我最初的想法是创建3个组件:
调用方与StreamingClient进行交互,StreamingClient调用StreamingConnection.connect()创建套接字连接,并将输入流作为构造函数参数传递给StreamReader和outputStream StreamWriter。
但是事实证明,阅读器需要根据传入消息在输出流上写入消息。另外,基于服务器的服务器可能会发送客户端应连接到的新主机详细信息,在这种情况下,我们将进行清理并再次开始流式传输。
我正在尝试可视化这些组件之间进行通信的最佳方式是什么?通过事件,调解员或我应该探索的任何其他模式?
是否有gRPC双向流的见解或类直径?
答案 0 :(得分:1)
我认为您不需要实现自己的StreamWriter(这是异步存根在调用流式RPC时返回的内容),除非您希望将其与另一层逻辑包装在一起。大多数情况下,实现将所有StreamingConnection,StreamReader和StreamWriter封装在StreamingClient类中。它们中的每一个在实现方面都不复杂(StreamingConnection建立一个通道并创建一个存根,用于进行RPC调用; StreamReader是实现StreamObserver的响应处理程序; StreamWriter是gRPC库为您提供的发送内容邮件发送到服务器)。将它们放在同一个类(例如内部类,甚至是匿名类)中,可以使它们彼此交互。