コード例 #1
0
        public async Task JoinChannel(string channelName, string username)
        {
            await RemoveFromAllChannelsAsync();

            ChannelUser channelUser = new ChannelUser
            {
                Username     = username,
                ChannelName  = channelName,
                ConnectionId = Context.ConnectionId
            };

            await Groups.AddToGroupAsync(Context.ConnectionId, channelUser.ChannelName);

            if (!_channelUserMap.TryGetValue(channelName, out List <ChannelUser> list))
            {
                list = new List <ChannelUser>();
                _channelUserMap.Add(channelName, list);
            }
            else
            {
                _channelUserMap.TryGetValue(channelName, out List <ChannelUser> userList);
                //_channelUserMap.userList.Add(channelUser);
            }

            list.Add(channelUser);

            await Clients.Groups(channelName).JoinedChannel(channelUser.Username);
        }
コード例 #2
0
        //public async Task RemovedUserFromChannel(string username)
        //{

        //}

        public async Task SendMessageToChannel(string message)
        {
            ChannelUser channelUser = GetUserFromConnection(Context.ConnectionId);

            if (channelUser != null)
            {
                await Clients.Group(channelUser.ChannelName).ReceivedMessage(channelUser.Username, message);
            }
        }