hhxsv5 / php-sse

A simple and efficient library implemented HTML5's server-sent events by PHP, is used to real-time push events from server to client, and easier than Websocket, instead of AJAX request.
MIT License
426 stars 49 forks source link

SE Eventsource Asp.net Core 3.1 #26

Open Hemalathaerdster opened 3 years ago

Hemalathaerdster commented 3 years ago

[ApiController] [Route("/SSE/[action]")] public class SSEController : Controller { private static ConcurrentBag clients; static SSEController() { clients = new ConcurrentBag(); } [HttpPost] public async Task SSECallbackMsg() { await CallbackMsg("test"); } private async Task CallbackMsg(string test) { foreach (var client in clients) { try { var data = string.Format(test); await client.WriteAsync(data); await client.FlushAsync(); client.Dispose(); } catch (Exception) { StreamWriter ignore; clients.TryTake(out ignore); } } } [HttpGet] public HttpResponseMessage GETSubscibe() { HttpResponseMessage response = new HttpResponseMessage(); response.Content = new PushStreamContent((a, b, c) => { OnStreamAvailable(a, b, c); }, "text/event-stream"); return response; }

private void OnStreamAvailable(Stream stream, HttpContent content,
    TransportContext context)
{
    var client = new StreamWriter(stream,Encoding.UTF8);
    clients.Add(client);
}

} Javascript Method of calling above is like

function listenForServerEvents() { var source = new EventSource('https://localhost:5002/SSE/GETSubscibe'); source.addEventListener("open", function (event) { console.log('onopen'); }, false); source.addEventListener("error", function (event) { if (event.eventPhase == EventSource.CLOSED) { source.close(); } }, false); source.addEventListener("message", function (event) { console.log('onmessage: ' + event.data); }, false); } when executing, above js function, i am getting error as EventSource's response has a MIME type ("application/json") that is not "text/event-stream". Aborting the connection.

Should add anything in startup.cs or is there any mistake., If anyone knows ,kindly help