SignalR Client How to Set user when start connection?

前端 未结 4 1415
走了就别回头了
走了就别回头了 2021-02-04 09:46

Server side:

public override Task OnConnected()
{
    var connectionId = Context.ConnectionId;
    var user = Context.User.Identity.Name; // Context.User is NULL         


        
相关标签:
4条回答
  • 2021-02-04 09:56

    Client

    var connection = new HubConnection(<YOUR_URL>);
    connection.Headers.Add("username", "maria");
    var myHub = connection.CreateHubProxy("MyHub");
    

    Server

    string username = Context.Headers.Get("username");
    Console.WriteLine("New client connection - " + username);
    
    0 讨论(0)
  • 2021-02-04 09:57

    try this

    Client (C#)

           //Enter query string 
           var querystringData = new Dictionary<string, string>();
           querystringData.Add("username", "naveed");
    
    
           IHubProxy _hub;
           string url = @"http://localhost:8080/";
           var connection = new HubConnection(url);
           _hub = connection.CreateHubProxy("TestHub");
           connection.Start().Wait();
           connection.Start().Wait();
    

    Server

    public override Task OnConnected()
    {
      var connectionId = Context.ConnectionId;
      var username= Context.QueryString["username"]; //here you will receive naveed as username
    
      return base.OnConnected();
    }
    
    0 讨论(0)
  • 2021-02-04 10:00

    Pass your username using query string.

    Client

    First set query string

    string url = @"http://localhost:8080/";
    var connection = new HubConnection(url);
    _hub = connection.CreateHubProxy("TestHub");
    connection.qs = { 'username' : 'anik' };
    connection.Start().Wait();
    

    Server

    public override Task OnConnected()
    {
        var username= Context.QueryString['username'];
        return base.OnConnected();
    }
    
    0 讨论(0)
  • 2021-02-04 10:01

    try this with queryString in asp.netcore 2.1:

    Client (javascript) set query string after url like follow:

    var connection = new signalR.HubConnectionBuilder().withUrl("http://localhost:10499/chathub?username=xxxx").build();
    connection.start().then(function ()
    {
        // do some thing here ...
    }).catch(function (err)
    {
        console.error(err.toString());
    });
    .
    .
    .
    

    Server

    public override Task OnConnectedAsync()
        {
            var  username = Context.GetHttpContext().Request.Query["username"];
            // username = xxxx
            return base.OnConnectedAsync();
        }
    
    0 讨论(0)
提交回复
热议问题