Registry / messaging / reactive-grpc

reactive-grpc

JSON →
library3.0.1jsnpmunverified

RxJS wrapper for gRPC and TypeScript (Node.js and browser). Current stable version 3.0.1. Wraps @grpc/grpc-js and grpc-web with RxJS Observables and Promises, enabling reactive server implementations and client calls. Requires rxjs^6 and either @grpc/grpc-js or grpc-web. Ships TypeScript types. Alternative to manually handling gRPC callbacks and event streams. Release cadence is irregular.

npm install reactive-grpc
INSTALL
IMPORT
SIG · REACTIVE-GRPC
R
reactive-grpc
messagingjavascriptv3.0.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

defineService
import { defineService } from 'reactive-grpc/node';
import { defineService } from 'reactive-grpc';
Server-side (Node.js) usage requires '/node' suffix. Browser/web client uses 'reactive-grpc/web'.
serviceCall
import { serviceCall } from 'reactive-grpc/node';
import { serviceCall } from 'reactive-grpc/node'; // but for individual methods
Use for individual method reactification. Also requires '/node' suffix for Node.js.
clientCall
import { clientCall } from 'reactive-grpc/node';
import { clientCall } from 'reactive-grpc';
For client-side Node.js usage. For web, use 'reactive-grpc/web'.

Shows how to define a reactive gRPC server using defineService with RxJS operators. Imports from '/node' and uses generated protobuf types.

import { defineService } from 'reactive-grpc/node'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { OneNumber, Empty } from './generated/service_pb'; import { ExampleService, IExampleServer } from './generated/service_grpc_pb'; const server = defineService<IExampleServer>(ExampleService, { getFibonacciSequence(request: Empty): Observable<OneNumber> { let a = 0, b = 1; return interval(100).pipe( map(() => { const next = a + b; a = b; b = next; return new OneNumber().setA(a); }) ); }, });
Debug
Known issues
breakingVersion 2.x to 3.x changed the import paths: Node.js server imports require '/node' suffix, web imports require '/web' suffix.
fix
Update imports: import from 'reactive-grpc/node' or 'reactive-grpc/web' instead of plain 'reactive-grpc'.
affects: <3.0
gotchaRequires rxjs version >=6.0.0 <7.0.0 (v6). Using rxjs v7 may cause compatibility issues.
fix
Ensure rxjs v6 is installed: npm install rxjs@6
affects: >=3.0
gotchaThe package does not install @grpc/grpc-js or grpc-web automatically; they must be added as dependencies.
fix
Install the appropriate peer dependency: npm install @grpc/grpc-js for Node.js or grpc-web for browser.
affects: >=0.0.0
deprecatedThe toPromise() method on Observables is deprecated in rxjs v7 and may be removed. reactive-grpc's examples use toPromise() for unary calls.
fix
Replace toPromise() with lastValueFrom() or firstValueFrom() from rxjs.
affects: >=3.0
gotchaType inference with defineService works best when the full service interface is provided; otherwise, method signatures may not be correctly inferred.
fix
Always pass the generated server interface (IExampleServer) as a generic parameter to defineService.
affects: >=3.0
Errors
Common errors & fixes
Cannot find module 'reactive-grpc' or its corresponding type declarations.
Import path missing '/node' or '/web' suffix.
fix
Change import to 'reactive-grpc/node' for Node.js or 'reactive-grpc/web' for browser.
Operator 'pipe' cannot be called on type 'void'.
Service method returning a non-observable value when an Observable is expected.
fix
Ensure methods that should be streaming return Observable<T>, and unary methods return Promise<T> or T.
Type 'Observable<OneNumber>' is not assignable to type 'Observable<OneNumber | AsyncIterable<OneNumber>>'.
Using rxjs v7 where Observable no longer matches async iterable type expected by some gRPC client interfaces.
fix
Downgrade to rxjs v6 or wrap Observable with from() before returning.
Uncaught Error: No method name provided
Service definition missing the method name in defineService object.
fix
Check that all methods from the server interface are implemented with correct names.
Upgrade
Version history
3.0.1latest on npm
Audit
Dependencies
rxjsrequiredRuntime dependency for Observables and operators.
@grpc/grpc-jsoptionalPeer dependency for Node.js server usage.
grpc-weboptionalPeer dependency for browser/web client usage.
Agent activity
16 hits · last 30 days
node
14
Amazon
1
OpenAI (training)
1
Resources
reactive-grpc — npm install reactive-grpc · libregistry