public async Task GetStickyConnectionInfo(Hub hub) { var serverName = _serverNameProvider.GetName(); var clientRequestId = hub.Context.GetHttpContext().Request.Query["asrs_request_id"]; // Only the first connected client will get the sticky information var data = new StickyPayloadData() { HubName = "transportHub", RequestId = clientRequestId, ServerName = serverName }; await hub.Clients.Client(hub.Context.ConnectionId).SendAsync(ClientSyncConstants.TransportHubInfo, data); }
public static Task ProvideTransportHubInfo(HubConnection hubConnection, StickyPayloadData transportHubInfo) { hubConnection.On <RequestAccessData>(ClientSyncConstants.RequestConnectToTransportHub, async(payload) => { // Assume the 1st connection has already obtained hub connection info. // merge with the previous 1st connection's info. var response = new ResponseToRequestAccessData() { RequestAccessData = payload, StickyPayloadData = transportHubInfo }; await hubConnection.SendAsync(ClientSyncConstants.ResponseAccess, response); }); return(Task.CompletedTask); }