-
Notifications
You must be signed in to change notification settings - Fork 10.7k
[Epic]: Support returning values from client invocations #5280
Copy link
Copy link
Closed
Labels
DocsThis issue tracks updating documentationThis issue tracks updating documentationEpicGroups multiple user stories. Can be grouped under a theme.Groups multiple user stories. Can be grouped under a theme.Needs: DesignThis issue requires design work before implementating.This issue requires design work before implementating.Priority:0Work that we can't release withoutWork that we can't release withoutaffected-mediumThis issue impacts approximately half of our customersThis issue impacts approximately half of our customersapi-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-signalrIncludes: SignalR clients and serversIncludes: SignalR clients and serversenhancementThis issue represents an ask for new feature or an enhancement to an existing oneThis issue represents an ask for new feature or an enhancement to an existing oneseverity-minorThis label is used by an internal toolThis label is used by an internal tool
Milestone
Metadata
Metadata
Assignees
Labels
DocsThis issue tracks updating documentationThis issue tracks updating documentationEpicGroups multiple user stories. Can be grouped under a theme.Groups multiple user stories. Can be grouped under a theme.Needs: DesignThis issue requires design work before implementating.This issue requires design work before implementating.Priority:0Work that we can't release withoutWork that we can't release withoutaffected-mediumThis issue impacts approximately half of our customersThis issue impacts approximately half of our customersapi-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-signalrIncludes: SignalR clients and serversIncludes: SignalR clients and serversenhancementThis issue represents an ask for new feature or an enhancement to an existing oneThis issue represents an ask for new feature or an enhancement to an existing oneseverity-minorThis label is used by an internal toolThis label is used by an internal tool
Type
Fields
Give feedbackNo fields configured for issues without a type.
Support server to clients acks so that reliable messaging can be implemented more easily. This would only be when using
Clients.Client(). I think we should go back to the SendAsync (fire and forget) InvokeAsync (wait for ack) naming pattern. That's the one sticking point.EDIT by @anurse: For clarity, this issue is tracking all work related to allowing values to be returned from client invocations. It also covers allowing the server to wait for a
void-returning (orTask-returning) client side method to complete.Work left for .NET 7
.Onmethod look like? ProbablySingle<T>This was already an issue with Task returning.Onmethods, but client results likely makes it more likely to block on the client side[ ] Hub methods can soft-lock the connection #41997IHubContextin the Hub, or if you have multiple waiting results for the same connections Hubs.OnConnectedAsyncbecause that's a special method that runs before the receive loop starts, we need to throw/unblock/warn etc. for this[ ] Analyzer to warn about strongly-typed hubs and usingInvokeAsyncwith.All,.Group, etc.[ ]InvokeAsyncvoid result? Scenario, acks without needing a value[ ] [Scaleout] ServerA requests client result from connection on ServerB, ServerB goes down after receiving request, ServerA needs to know somehow so it can error the client result[ ] Look at performanceThe biggest performance issue I can think of right now is thatRawResultallocates and copy the bytes which can be expensive[ ] Flow cancellation from server to client- InjectCancellationTokeninto.Onmethods and sendCancelInvocationhub messages to clients