I have tested my Asp.NET MVC application to run SignalR and it properly handles the text/event-stream
MIME with a serverSentEvents connection, using Visual Studio 2012, IIS Express (Microsoft-IIS/8.0) and Chrome.
Now that I am deploying to production environment (IIS 7.5, .NET Framework 4.5, Windows Server 2008R2), I've noticed that SignalR always falls back to LongPolling transport, since the signalr/connect?transport=serverSentEvents etc
times out.
Is there a way to configure Microsoft-IIS/7.5 to make ServerSentEvents work? Or is this possible only on 8.0+?
When I try to directly access the url
'http://my.webapp.com/MyHub/signalr/connect?transport=serverSentEvents&connectionId=624849a4-45c6-458b-b6d0-f7cb023ab226&connectionData=%5B%7B%22name%22%3A%22myHub%22%7D%5D&tid=2'
I am getting a file which contains what looks like a SSE data packet:
data: initialized
id: 14476
data: {"MessageId":"14476","Messages":[],"Disconnect":false,"TimedOut":false,"TransportData":{}}
so I am not sure why the timeout is hitting the request.
Turns out that no specific configuration was required in my case - SignalR falling back to longPolling depended on the fact that my server is evidently behind a proxy.
To test this, I suggest to try the connection to the hub server on server using localhost as web address - in my case the transport is correctly set up as serverSentEvents (when using Chrome) or foreverFrame (when using IE)
Credit to user dfowler for the heads up (more here)
What might be happening that the server is compressing the dynamic content generated before sending it to client. Add this in your web.config to fix
<location path="signalr">
<system.webServer>
<urlCompression doDynamicCompression="false"/>
</system.webServer>
</location>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With