I looked into the forums and I couldn’t find any similar issue.
I have 2 servers, in one SSE is working like a charm, but when I deployed to a production environment, the eventsource request never established a connection and it got canceled after 18 minutes
Since I didn’t receive any error, these are some steps I did to try to track down the issue:
I added the ss-tok in the query string because I thought it could be an auth issue. (weird since the cookie was in the request) I think when I did this I was able to receive streams but after 10 minutes or so.
I made sure that all services have an IReturn interface and both servers have the same IIS configuration
I removed the Application Insights javascript and telemetry filter from the server since I thought this may cause any conflict
I removed the file system mapping I put in place
I’ve been struggling with this weird issue for 4 hours. Please, could you give me some insights?
The general issue that can inhibit server events are if you have any kind of buffering, like compression enabled in your App or if you’re going through a proxy that buffers or terminates long-lived HTTP Connections.
For Web Clients, CORS is typically what prevent connections. If you can see any Response from the server that will tell you whether you’re able to connect at all, you can try using a HTTP Packet sniffer like Fiddler which can provide a better look at the raw HTTP traffic.
On the server you can handle events on ServerEventsFeature like OnInit to see if the connection to establish the SSE subscription is being received, if the subscription request is valid it will call OnCreated to create the subscription. If there’s an issue with the connection request it should fail immediately so you should see a HTTP Error Response code.
If there’s an error after the connection has been established in should fire OnError callback, and you can use OnUnsubscribe* to get called when the server has removed the subscription for any reason (i.e. failed heartbeat, error, client ends subscription, etc).
I looked into the compression. Both servers have enabled static and dynamic compression.
Requests aren’t going through a proxy.
I included some traces in the OnInit, OnCreated, and OnError events, a connection was established in both servers and a subscription was created. There wasn’t any error. These are the JSON I got for each event: OnInit Request
DynamicCompression is a known issue which forces buffering which delays the SSE events from being sent immediately, my guess is that the other server had it disabled elsewhere or other handler/feature enabled which prevents buffering.