C# .NET 4.5.1 Web API 使用 EventSource 返回流数据
以下是一个示例代码,可以将接收到的 Stream 流以 event-stream 方式返回给客户端:
public HttpResponseMessage Get()
{
var response = Request.CreateResponse();
response.Content = new PushStreamContent((stream, content, context) =>
{
// 读取输入流,并将其写入输出流
var input = context.Request.Content.ReadAsStreamAsync().Result;
var buffer = new byte[4096];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, bytesRead);
stream.Flush();
}
// 关闭输出流
stream.Close();
}, 'text/event-stream');
return response;
}
在上面的示例中,我们使用了 PushStreamContent 来创建一个响应流,并使用 lambda 表达式来编写将输入流写入输出流的代码。我们还设置了响应的 Content-Type 为 'text/event-stream',以指示客户端我们正在使用 SSE(Server-Sent Events)协议。
请注意,上面的代码是同步的,因此它将阻塞线程,直到所有数据都被写入输出流并关闭。如果您需要异步处理,可以使用 async/await 语法或 Task.Run 来运行代码。
原文地址: https://www.cveoy.top/t/topic/mkEi 著作权归作者所有。请勿转载和采集!