private Dictionary<string, SlackChatHub> GetChatHubs(HandshakeResponse handshakeResponse)
        {
            var hubs = new Dictionary<string, SlackChatHub>();

            foreach (Channel channel in handshakeResponse.Channels.Where(x => !x.IsArchived))
            {
                if (channel.IsMember)
                {
                    var newChannel = new SlackChatHub
                    {
                        Id = channel.Id,
                        Name = "#" + channel.Name,
                        Type = SlackChatHubType.Channel
                    };

                    hubs.Add(channel.Id, newChannel);
                }
            }

            foreach (Group group in handshakeResponse.Groups.Where(x => !x.IsArchived))
            {
                if (group.Members.Any(x => x == handshakeResponse.Self.Id))
                {
                    var newGroup = new SlackChatHub
                    {
                        Id = group.Id,
                        Name = "#" + group.Name,
                        Type = SlackChatHubType.Group
                    };

                    hubs.Add(group.Id, newGroup);
                }
            }

            foreach (Im im in handshakeResponse.Ims)
            {
                User user = handshakeResponse.Users.FirstOrDefault(x => x.Id == im.User);
                var dm = new SlackChatHub
                {
                    Id = im.Id,
                    Name = "@" + (user == null ? im.User : user.Name),
                    Type = SlackChatHubType.DM
                };

                hubs.Add(im.Id, dm);
            }

            return hubs;
        }
 private async Task<IWebSocketClient> GetWebSocket(HandshakeResponse handshakeResponse)
 {
     var webSocketClient = _connectionFactory.CreateWebSocketClient(handshakeResponse.WebSocketUrl);
     await webSocketClient.Connect();
     return webSocketClient;
 }