Interceptors in Typescript for GRPC client-side customization

I am trying to implement GRPC interceptors on the client side of a GRPC request in typescript (not on the server). While I know that for the server we can refer to , I am looking for a solution from the caller's side.

These interceptors are intended to streamline common generic tasks like metric tracking with Prometheus and tracing with OpenTracing.

The grpc.Client seems promising () since all GRPC clients must extend it. Has anyone successfully intercepted calls to functions like makeUnaryRequest? Would it involve creating a custom class that extends the generated GRPC client and overrides makeUnaryRequest?

I am hoping that there is a way to add interceptors as options, similar to what is available in Go: https://github.com/grpc-ecosystem/go-grpc-prometheus#client-side.

Thank you! Ankur

Answer №1

Upon reviewing the grpc.Client documentation page you shared, it highlights key constructor options such as interceptors and interceptor_providers. Depending on your specific use case, it is recommended to leverage one of these options to supply interceptors to the client. For detailed information on creating and utilizing interceptors, refer to the comprehensive specifications outlined in this proposal document.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

When using RXJS, the method BehaviorSubject.next() does not automatically notify subscribers

In my project, I have a service set up like this: @Injectable({ providedIn: 'root' }) export class MyService { private mySubject = new BehaviorSubject({}); public currentData = this.mySubject.asObservable(); updateData(data: any) { ...

Issue with updating BehaviorSubject not being reflected when called from my service component has been identified

In my HomeComponent, I am currently using *ngIf to switch between 3 components. The focus right now is on the relationship between two of them - the ProductListComponent and the ProductDetailComponent. Inside the ProductListComponent, there is a ProductLis ...

Understanding how to infer type from the arguments of a class constructor in Typescript

Is there a way to reuse the argument type definition of a class constructor without refactoring or extracting it from the class itself? I have tried using GetProps<TBase>, but it doesn't work as expected. In the example below, the const bp defin ...

Key-based iterative function for intercepting values

Looking to extract values associated with the key text from a large JSON file. Here is an example snippet: type":"doc", "content":[ { "type":"paragraph", "content":[ ...

"Firebase function fails to return Typescript class variable, resulting in 'undefined'

Being someone with a background in python/golang, I am now delving into ionic2. There seems to be an issue that I can't quite figure out due to my current level of knowledge in this stack. Perhaps I just need a way to reference the outer scope of this ...

When ngIf fails to detect a change in a variable's value

Whenever I try to set a simple boolean variable to show/hide a div from another component, the ngIf directive doesn't seem to recognize it. In my messages-refresh.component.html file: <div class="divOpacity" *ngIf="show"> <div class="boxMes ...

How to send a value to a function in Angular from a different function?

Within my Angular Typescript file, I am working with two functions named data and lists. My goal is to pass the variable windows from the function data to the function lists. However, when attempting to call the function lists, I encounter an error: Canno ...

Do not consider file extensions when using child_process fork with node-dev and Typescript

In my Typescript project, I utilize both node-dev and ts-node in my local development environment. To create a subprocess, I make use of the fork method from child_process, as shown here: fork(path.join(__dirname, './worker.ts')); While this se ...

Exploring Angular5 Navigation through Routing

I have been working with Angular routing and I believe that I may not be using it correctly. While it is functional, it seems to be causing issues with the HTML navbars - specifically the Info and Skills tabs. When clicking on Skills, a component popup s ...

Extensible generic type/interface in Typescript

Looking to create a versatile base interface or type that can adapt its properties based on the generic object it receives. It might look something like this: interface BaseObject<Extension extends object = {}>{ a: string; b: string; {...Ext ...

Issue encountered when attempting to import a module within the ionic framework

I encountered an issue in my project (built with the ionic-framework 3) where I included the following line to import the dialogflow module: const dialogflow = require('dialogflow'); However, when compiling, it resulted in the error message: ...

Sending an undefined array shape

I recently created a function to duplicate an array: const data = (items) => { myData = items.slice() } The variable items is an array of objects with varying shapes. How can I accomplish this in TypeScript? const data = (items: Array<any>) =&g ...

JavaScript exporting data to Excel and populating the top row with column

My code successfully exports a file via Excel without any errors. However, the issue I'm facing is that the exported Excel file contains a lot of unnecessary spaces. The problem is highlighted in the image provided: data from row 123 should be in col ...

IE11 and how it handles Typescript and promises

Currently, I am utilizing Typescript version 2.4.2 along with Webpack for compilation purposes. Despite successful compilation, when running my code on IE11, an error 'Promise' is undefined arises. Below is a glimpse of my tsconfig: { "comp ...

Compel a customer to invoke a particular function

Is there a way to ensure that the build method is always called by the client at the end of the command chain? const foo = new Foo(); foo.bar().a() // I need to guarantee that the `build` method is invoked. Check out the following code snippet: interface ...

When using create-react-app with JEST to run tests, TypeScript errors are not displayed

When I write incorrect TypeScript code in my project set up with create-react-app, running tests using npm test does not show any errors in the terminal. Is this normal behavior? It would be helpful to see these errors to avoid writing incorrect TypeScript ...

Angular validation with input binding using if statement

I have developed a reusable component for input fields where I included a Boolean variable called "IsValid" in my typescript file to handle validation messages. Here is the code from my typescript file: export class InputControlsComponent implements OnIn ...

Setting up ESLint and Prettier for Accurate Error Detection in TypeScript and Next.js Development

As I work with TypeScript and Next.js, I decided to implement strict code formatting rules by adding the following configuration to my eslintrc.json file: "rules": { "prettier/prettier": "error" } However, when I ran npm ru ...

The assigned type does not match the mapped type

When looking at the following example, the error Type 'string' is not assignable to type 'MapType<ReturnT>'.(2322) confuses me. The return type of the strToTs function is actually string | number | any, depending on a different ty ...

The issue encountered during a POST request in Postman is a SyntaxError where a number is missing after the minus sign in a JSON object at position 1 (line 1

Running my API in a website application works flawlessly, but encountering SyntaxError when testing it in Postman - specifically "No number after minus sign in JSON at position 1" (line 1 column 2). The data is correctly inputted into the body of Postman a ...