I implement the Connect()
method on IConnected
interface to add new connections to the correct groups. This works well except for one thing: in order to add the user to the correct group, I need to send a value to be read in this method. I tried adding property to the client hub:
var uIHub = $.connection.uIHub;
uIHub.SessionType = "Edit";
But it's not accessible from the Connect
method:
if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") {
sessionId = WAFContext.EditSession.SessionId.ToString();
} else {
sessionId = WAFContext.ViewSession.SessionId.ToString();
}
Groups.Add(Context.ConnectionId, sessionId);
Caller.SessionType
is always null.
Any suggestions on how to solve this?
SignalR allows messages to be sent to a particular client connection, all connections associated with a specific user, as well as to named groups of connections. => await Clients. User(userId).
When user click on send button, the message to be posted to server side using signalR connection hub. Thus whenever you post any message after clicking the join group button, the message will appear to all the clients who has joined the group.
In the default mode, the app server creates five server connections with Azure SignalR Service. The app server uses the Azure SignalR Service SDK by default. In the following performance test results, server connections are increased to 15 (or more for broadcasting and sending a message to a big group).
SignalR is an abstraction over some of the transports that are required to do real-time work between client and server. SignalR first attempts to establish a WebSocket connection if possible. WebSocket is the optimal transport for SignalR because it has: The most efficient use of server memory.
I solved this by adding my information to the querystring, which is available on the IConnected.Connect()
method.
On the .NET client you pass the querystring into your HubConnection
:
var connection = new HubConnection("http://localhost:8080/", "myInfo=12345");
On the JS client, you set the qs
property before starting the connection:
$.connection.hub.qs = "myInfo=12345";
You can then access this information on the server in the Connect()
method:
var myInfo = Context.QueryString["myInfo"]; Groups.Add(Context.ConnectionId, myInfo);
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