C# ASP.NET:通过PushStreamContent发送的数据延迟接收

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<

我使用ASP.NET中的
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查询时创建了一次流。好的,我将更改代码