static void OnSay(Say msg, IOperationContext context) { RoomMember member; if (RoomMembers.TryGetValue(context.ReplyChannel, out member)) { List<RoomMember> members; if (Rooms.TryGetValue(member.RoomName, out members)) { members.ForEach((m) => m.UserChannel.Send(new RoomEvent() { UserName = member.UserName, Text = msg.Text })); } } }
async Task OnSay(Say msg, IOperationContext context) { RoomMember member; if (RoomMembers.TryGetValue(context.ReplyChannel, out member)) { RoomData room; if (Rooms.TryGetValue(member.RoomName, out room)) { var newEvent = new RoomEvent() {UserName = member.UserName, Text = msg.Text}; room.History.Add(newEvent); using (var tx = StateManager.CreateTransaction()) { await _roomsState.SetAsync(tx, room.Name, room); await tx.CommitAsync(); } room.Members.ForEach(m => m.UserChannel.Send(newEvent)); } } }