public override async Task <Empty> SubscribeToRoomsUpdates(RoomsUpdatesRequest request, ServerCallContext context) { _logger.LogInformation( "Begin grpc call from method {Method} to subscribe to Rooms {RoomsIds} with connectionId {ConnectionId}", context.Method, string.Join(',', request.Rooms.Select(r => r.Id)), request.ConnectionId); var verifiedConnection = await _userConnectionService.VerifyConnectionAsync(request.UserId, request.ConnectionId); if (!verifiedConnection) { context.Status = new Status(StatusCode.InvalidArgument, "Invalid connection id."); return(new Empty()); } foreach (var dm in request.Rooms) { var dmSubscription = new RoomSubscription(dm.Id); await _subscriptionService.SubscribeAsync(request.ConnectionId, dmSubscription); foreach (var member in dm.MembersIds) { var userSubscription = new UserSubscription(member); await _subscriptionService.SubscribeAsync(request.ConnectionId, userSubscription); } } return(new Empty()); }