Обновление SignalR до SignalR 2 - PullRequest
       26

Обновление SignalR до SignalR 2

1 голос
/ 09 марта 2020

Мое приложение использует 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 file:

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

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Концентратор: -

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'); 
       });
});

Вы можете больше узнать о SignalR в этом ответ .

0 голосов
/ 09 марта 2020

Вы проверили это

https://docs.microsoft.com/vi-vn/aspnet/core/signalr/groups?view=aspnetcore-3.1&viewFallbackFrom=aspnetcore-2.0

Я думаю, что статья может помочь вам

...