我使用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");
}
这是一个近似的使用示例。
但是当发送第一个事件时,客户端不会收到此数据。 GET查询的状态(使用EventSource进行连接)从等待内容下载更改。
当发送第二个事件时,客户端接收第一个事件发送的数据。等
有时,客户端会同时收到两个事件(最新和之前),但下次没有任何事件再次收到。
我该如何解决这个问题?