Fixed: Support for SignalR's Server Sent Events transport as an alternative to websockets and long polling
This commit is contained in:
parent
5cf2672469
commit
83c09b4540
|
@ -84,7 +84,7 @@ class SignalRConnector extends Component {
|
|||
constructor(props, context) {
|
||||
super(props, context);
|
||||
|
||||
this.signalRconnectionOptions = { transport: ['webSockets', 'longPolling'] };
|
||||
this.signalRconnectionOptions = { transport: ['webSockets', 'serverSentEvents', 'longPolling'] };
|
||||
this.signalRconnection = null;
|
||||
this.retryInterval = 1;
|
||||
this.retryTimeoutId = null;
|
||||
|
|
|
@ -16,9 +16,14 @@ namespace NzbDrone.Host.Owin.MiddleWare
|
|||
SignalRDependencyResolver.Register(container);
|
||||
SignalRJsonSerializer.Register();
|
||||
|
||||
// Half the default time (110s) to get under nginx's default 60 proxy_read_timeout
|
||||
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(55);
|
||||
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromMinutes(3);
|
||||
// Note there are some important timeouts involved here:
|
||||
// nginx has a default 60 sec proxy_read_timeout, this means the connection will be terminated if the server doesn't send anything within that time.
|
||||
// Previously we lowered the ConnectionTimeout from 110s to 55s to remedy that, however all we should've done is set an appropriate KeepAlive.
|
||||
// By default KeepAlive is 1/3rd of the DisconnectTimeout, which we set incredibly high 5 years ago, resulting in KeepAlive being 1 minute.
|
||||
// So when adjusting these values in the future, please keep that all in mind.
|
||||
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(110);
|
||||
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(180);
|
||||
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(30);
|
||||
}
|
||||
|
||||
public void Attach(IAppBuilder appBuilder)
|
||||
|
|
|
@ -13,6 +13,7 @@ namespace NzbDrone.SignalR
|
|||
{
|
||||
_serializerSettings = Json.GetSerializerSettings();
|
||||
_serializerSettings.ContractResolver = new SignalRContractResolver();
|
||||
_serializerSettings.Formatting = Formatting.None; // ServerSentEvents doesn't like newlines
|
||||
|
||||
_serializer = JsonSerializer.Create(_serializerSettings);
|
||||
|
||||
|
|
Loading…
Reference in New Issue