SignalR - отдельная логика между несколькими хабами - PullRequest
0 голосов
/ 04 сентября 2018

Я использую SignalR, и я хотел бы добавить новую функциональность, которая полностью отличается от предыдущей, поэтому я продумал отдельную логику в моем хабе.

Является ли это хорошим решением для создания одного основного концентратора, только с перезаписанными методами OnConnected () и OnDisconnected (), которые будут отвечать за сопоставление пользователей singalR со статической переменной и 2 «маленькими» концентраторами (каждый для одной темы).

Главный концентратор:

public class GlobalHub : Hub
{
    public static List<UserConnectionsModel> UserConnectionsList = new List<UserConnectionsModel>();

    public override Task OnConnected()
    {
    ...
    }

    public override Task OnDisconnected(bool stopCalled)
    {
    ...
    }
}

Один на "маленьком" хабе:

public class FastMessageHub : Hub
{        
    private static IHubContext _hubContext = GlobalHost.ConnectionManager.GetHubContext<GlobalHub>();

    public static void SendFastMessage(FastMessage fastMessage, string email)
    {
        UserConnectionsModel userConnections = GlobalHub.UserConnectionsList.FirstOrDefault(x => x.User.Email == email.Trim());
if (userConnections != null)
        {
            foreach (string connectionId in userConnections.ConnectionIds)
            {
                _hubContext.Clients.Client(connectionId).reciveMessage(fastMessage.Body, fastMessage.Subject, fastMessage.FastMessageId, fastMessage.CreateDate, "info");
            }
        }
    ...
    ...
    }

Может быть, есть другое решение для обмена клиентами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...