public void Handle(UserLeftEvent args) { Logger.LogInformation($"SIGNALR - {UserLeft} - {args.User.Name} has left the chat."); var result = new UsersDto() { User = Mapper.Map <User, UserDto>(args.User), Users = Mapper.Map <IEnumerable <User>, IEnumerable <UserDto> >(args.Users) }; _connectionManager.Clients.All.SendAsync(UserLeft, JsonConvert.SerializeObject(result)); }
public void MapUserLeftChatroomEvent() { var e = new UserLeftEvent { ChatroomId = 1, UserId = 2, OperatorId = 0 }; var m = ChatroomEventMapper.Map(e); Assert.Equal(new ChatMessage { TimeUnixMs = e.Time.ToUnixTimeMilliseconds(), SenderId = 0, ChatroomId = 1, Content = new Content { PeopleLeave = new Content.Types.PeopleLeave { PeopleId = 2 } } }, m); }
public void OnChatPacket(PacketReader reader) { int messageNum = reader.ReadInt16(); reader.ReadString(4); // Language byte[] packet = reader.GetData(); switch (messageNum) { case 0x25: { int messageType = reader.ReadInt16(); string username = reader.ReadUnicodeString(); string message = reader.ReadUnicodeString(); Match matches = Regex.Match(message, "{(.*)}\\s+(.*)"); if (matches.Success) { string channel = matches.Groups[1].Value; string text = matches.Groups[2].Value; Messages.Add(new ChatMessage { Username = username, Channel = channel, Text = text }); ChatMessageEvent?.Invoke(username, channel, text); } break; } case 0x3e8: { string channel = reader.ReadUnicodeString(); if (!Channels.Contains(channel)) { Channels.Add(channel); ChannelCreatedEvent?.Invoke(channel); } break; } case 0x3e9: { string channel = reader.ReadUnicodeString(); if (Channels.Contains(channel)) { Channels.Remove(channel); ChannelRemovedEvent?.Invoke(channel); } break; } case 0x3ee: { reader.ReadInt16(); string userName = reader.ReadUnicodeString(); if (!Users.Contains(userName)) { Users.Add(userName); UserJoinedEvent?.Invoke(userName, string.Empty); } break; } case 0x3ef: { string userName = reader.ReadUnicodeString(); if (Users.Contains(userName)) { Users.Remove(userName); UserLeftEvent?.Invoke(userName, string.Empty); } break; } case 0x3f1: { CurrentChannel = reader.ReadUnicodeString(); JoinedChatChannelEvent?.Invoke(CurrentChannel); break; } case 0x3f0: { Users.Clear(); ClearUsersEvent?.Invoke(); break; } case 0x3f4: { LeftChatChannelEvent?.Invoke(CurrentChannel); CurrentChannel = null; break; } // ReSharper disable once RedundantEmptySwitchSection default: break; } }