C# ASP.NET:通过PushStreamContent发送的数据延迟接收
我使用ASP.NET中的C# ASP.NET:通过PushStreamContent发送的数据延迟接收,c#,asp.net,server-sent-events,C#,Asp.net,Server Sent Events,我使用ASP.NET中的PushStreamContent类来实现SSE服务器 public HttpResponseMessage Get(HttpRequestMessage request) { HttpResponseMessage response = request.CreateResponse(); response.Content = new PushStreamContent(new Action<
PushStreamContent
类来实现SSE服务器
public HttpResponseMessage Get(HttpRequestMessage request)
{
HttpResponseMessage response = request.CreateResponse();
response.Content =
new PushStreamContent(new Action<Stream, HttpContent, TransportContext>(OnStreamAvailable),
"text/event-stream");
return response;
}
private void OnStreamAvailable(Stream stream, HttpContent httpContent, TransportContext context)
{
streamWriter = new StreamWriter(stream) { AutoFlush = true };
}
public IHttpActionResult Post(JoinRoomFormViewModel vm)
{
streamWriter.WriteLine("data:smth\n");
}
公共HttpResponseMessage获取(HttpRequestMessage请求)
{
HttpResponseMessage response=request.CreateResponse();
答复.内容=
新的PushStreamContent(新操作(OnStreamAvailable),
“文本/事件流”);
返回响应;
}
私有void OnStreamAvailable(Stream-Stream、HttpContent-HttpContent、TransportContext-context)
{
streamWriter=新streamWriter(流){AutoFlush=true};
}
公共IHttpActionResult帖子(JoinRoomFormViewModel vm)
{
streamWriter.WriteLine(“数据:smth\n”);
}
这是一个近似的用法示例
但是,当发送第一个事件时,客户端不接收此数据。GET查询(使用EventSource连接)的状态从等待更改为内容下载
当发送第二个事件时,客户端接收第一个事件发送的数据。等
有时客户机一次接收两个事件(最新事件和上一个事件),但下一次不会再接收任何事件
如何解决此问题?如何存储连接的客户端?@BhushanFirake在示例StreamWriter store中创建,并存储到列表中的其他对象中。从不同的地方打电话。但我认为这并不重要。现在,您每次都在创建流,对它写一些响应,然后推入流并关闭流,这可能会引入延迟。@BhushanFirake不,我在get查询时创建了一次流。好的,我将更改代码