我想创建一个 C# .NET 服务器客户端应用程序,其中客户端发送请求,服务器发送答案。问题是,因为响应是相当大的文本数据,所以我希望在服务器生成部分答案后立即收到分块的答案。这个想法是以 ChatGPT 分块发送聊天消息的方式接收这些块,而不是一次全部发送。
在 C# 和 .NET 中,有哪些可用且最佳的技术可以实现这一目标?是否可以使用 REST 执行某种服务器发送事件,或者是否有更好的方法?
几乎所有选项都已摆在桌面上。对于 HTTP API,您可以返回
Stream
作为响应正文,使用 IEnumerable<string>
或 IAsyncEnumerable<string>
。或者您可以使用 SignalR,它将使用 WebSockets、SSE 或长轮询,具体取决于可用的内容。请记住,通常其他缓冲区位于两者之间,因此并非来自 yield
的每个 IEnumerable
都会立即发送到线路。而且您还必须正确读取客户端的流式响应。