c# webapi eventstream流逐字返回
您可以使用ASP.NET Core Web API中的Microsoft.AspNetCore.Mvc.Infrastructure.IActionResultExecutor
[HttpGet]
[Route("stream")]
public async Task<IActionResult> Stream()
{
Response.Headers.Add("Content-Type", "text/event-stream");
var data = "Hello, world!";
var bytes = Encoding.UTF8.GetBytes($"data: {data}\n\n");
await Response.Body.WriteAsync(bytes, 0, bytes.Length);
await Response.Body.FlushAsync();
return new EmptyResult();
}
在此示例中,我们首先向响应头添加了“Content-Type”标头,以指示响应类型为文本/事件流。接下来,我们将数据编码为字节数组,并使用Response.Body.WriteAsync方法将其写入响应流中。请注意,在写入数据之后,我们还必须调用Response.Body.FlushAsync方法来确保数据被发送到客户端。
最后,我们返回一个EmptyResult,因为我们已经直接向响应流写入数据,而不需要使用视图或其他结果类型。
在客户端,您可以使用JavaScript中的EventSource对象来接收事件流数据。以下是一个使用jQuery的示例代码:
$(function() {
var source = new EventSource('/api/mycontroller/stream');
source.onmessage = function(event) {
console.log(event.data);
};
});
在此示例中,我们创建了一个新的EventSource对象,并将其连接到我们的Web API端点。每次收到新的数据时,我们会将其打印到浏览器的控制台中。
原文地址: https://www.cveoy.top/t/topic/3RH 著作权归作者所有。请勿转载和采集!