dotnet / AspNetCore.Docs

Documentation for ASP.NET Core
https://docs.microsoft.com/aspnet/core
Creative Commons Attribution 4.0 International
12.58k stars 25.3k forks source link

Please document setting TransportSendTimeout for SignalR #30364

Open tomap opened 1 year ago

tomap commented 1 year ago

Hello,

Could you please document the TransportSendTimeout (default 10sec)

Also, could you document the possibility to pass a cancelation token in both the IClientProxy https://github.com/dotnet/aspnetcore/blob/6e49859a0762576dcb174dd7583cde78ddf73979/src/SignalR/server/Core/src/IClientProxy.cs#L23 AND the strongly typed client as a last parameter : https://github.com/dotnet/aspnetcore/blob/6e49859a0762576dcb174dd7583cde78ddf73979/src/SignalR/server/Core/src/Internal/TypedClientBuilder.cs#L214

It seems that both will allow the message to timeout. https://github.com/dotnet/aspnetcore/blob/6e49859a0762576dcb174dd7583cde78ddf73979/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs#L616 But there is a the difference between relying on a CancelationToken timeout and the TransportSendTimeout

It seems (to my understanding), that the use of a CancelationToken timeout will bubble the timout exception to the caller of the Client method, while simply relying on TransportSendTimeout will swallow the exception and simply log it

I'm kind of looking for a confirmation of my understanding of this mecanism

Thank you

Thomas P.


Document Details

Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.


Associated WorkItem - 187723

wadepickett commented 1 year ago

@BrennanConroy, could you provide any guidance on this? It is true that except for a lean reference API topic on TransportSendTimeout, we don't have anything else on it. at least that I can find. I don't have much to go on to document it more.

BrennanConroy commented 1 year ago

Looks like we never added it to https://learn.microsoft.com/aspnet/core/signalr/configuration?view=aspnetcore-7.0&tabs=dotnet#advanced-http-configuration-options

This setting controls the amount of time we'll allow a single send on the transport to take, if it exceeds the value of this option we'll close the connection. (Generally the transport send is "instant" as it will write to a buffer, so this will only happen in practice if the client stops reading i.e. it is no longer connected but didn't close gracefully)

wadepickett commented 1 year ago

Thanks Brennan, I will get that doc updated with this info!

Thanks @tomap for taking the time to point this out and the details!