【问题标题】:Upgrade SignalR to SignalR 2将 SignalR 升级到 SignalR 2
【发布时间】:2020-06-20 22:56:27
【问题描述】:

我的应用程序正在使用 ASP.NET MVC 5。我将 SignalR 升级到 SignalR 2;升级后获取用户列表不起作用。

当我调试SendUserListUpdate时,我可以看到列表;但是它不会将列表发送到hub.client.updateUserList,而在 SignalR 1 中它会发送!

 public class User
 {
        public string Username;
        public string ConnectionId;
        public bool InCall;
 }  

 public class MyHub : Hub
 {
        private static readonly List<User> Users = new List<User>();

        public void Join(string username)
        {
           Users.Add(new User
            {
                Username = username,
                ConnectionId = Context.ConnectionId
            });

            SendUserListUpdate();
        }

        private void SendUserListUpdate()
        {
            Users.ForEach(u => u.InCall = (GetUserCall(u.ConnectionId) != null));
            Clients.All.updateUserList(Users);
        } 
 }

Javascript 文件:

 hub.client.updateUserList = function (userList) {
  $('#discussion').append('<li><strong>' + userList[0].Username + '</strong></li>');
  }; 

【问题讨论】:

    标签: c# asp.net-mvc signalr


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      中心:-

      public class User
       {
              public string Username;
              public string ConnectionId;
              public bool InCall;
       }  
       [HubName("myHub")]
       public class MyHub : Hub
       {
              private static readonly List<User> Users = new List<User>();
      
              public void Join(string username)
              {
                 Users.Add(new User
                  {
                      Username = username,
                      ConnectionId = Context.ConnectionId
                  });
      
                  SendUserListUpdate();
              }
      
              [HubMethodName("sendUserListUpdate")]
              public void SendUserListUpdate()
              {
                  Users.ForEach(u => u.InCall = (GetUserCall(u.ConnectionId) != null));
      
                  //My Code
                  var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
                  context.Clients.All.updateUserList(Users);
                  //It's also working
                  // Clients.All.updateUserList(Users);
              } 
       }
      

      javaScript-

      $(function () {
          var myHub = $.connection.myHub;
      
          myHub.client.updateUserList = function (userList) {
            $('#discussion').append('<li><strong>' + userList[0].Username + '</strong></li>');
          }; 
      
          $.connection.hub.start()
             .done(function () {
              myHub.server.sendUserListUpdate();
             })
              .fail(function () { 
              console.log('Could not connect'); 
             });
      });
      

      您可以在this answer 中了解有关 SignalR 的更多信息。

      【讨论】:

        猜你喜欢
        • 2013-07-31
        • 1970-01-01
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多