@entropysw/grpc-ts-health-check
v3.1.1
Published
An implementation of gRPC health checks, written in typescript.
Downloads
2
Maintainers
Readme
gRPC Health Check
Note: This is a fork from this public repo: https://github.com/nicolaspearson/kalos/tree/main/packages/grpc-ts-health-check I've only modified the dependencies to be fixed, all credits go to the Author: https://github.com/nicolaspearson
An implementation of gRPC
health checks, written in typescript.
It is assumed that you are using the @grpc/grpc-js
library.
Installation
yarn add @entropysw/grpc-ts-health-check
Install the @grpc/grpc-js
library:
yarn add @grpc/grpc-js
Dependencies
- Google Protobuf: Protocol Buffers - Google's data interchange format.
- gRPC Boom: A zero dependency library to help create
gRPC
-friendly error objects.
Usage
import * as grpc from '@grpc/grpc-js';
import * as protoLoader from '@grpc/proto-loader';
import path from 'path';
import { HealthClient } from '../dist/proto/grpc/health/v1/Health';
import { HealthCheckResponse__Output } from '../dist/proto/grpc/health/v1/HealthCheckResponse';
import { ProtoGrpcType } from '../dist/proto/health';
export class HealthGrpcClient {
private readonly client: HealthClient;
constructor({ host, port }: { host: string; port: number }) {
const packageDefinition = protoLoader.loadSync(path.resolve('../dist/proto/health.proto'), {
arrays: true,
keepCase: true,
longs: String,
enums: String,
objects: true,
defaults: true,
});
const proto = grpc.loadPackageDefinition(packageDefinition) as unknown as ProtoGrpcType;
this.client = new proto.grpc.health.v1.Health(
`${host}:${port}`,
grpc.ChannelCredentials.createInsecure(),
);
}
checkStatus(): Promise<HealthCheckResponse__Output> {
return new Promise((resolve, reject) => {
this.client.check(
{ service: 'example' },
(error?: grpc.ServiceError | null, result?: HealthCheckResponse__Output): void => {
if (error) {
reject(error);
}
resolve(result || ({} as HealthCheckResponse__Output));
},
);
});
}
watchStatus(): grpc.ClientReadableStream<HealthCheckResponse__Output> {
return this.client.watch({ service: 'example' });
}
}
Methods
Below is a list of available methods:
check(request, callback)
Checks the status of the service once.
request
- theHealthCheckRequest
object.callback
(optional) - the callback method.
watch(request)
Set the initial status of the service and continues to watch for any changes.
request
- theHealthCheckRequest
object.
License
MIT License
Contributing
Contributions are encouraged, please see further details below:
Pull Requests
Here are some basic rules to follow to ensure timely addition of your request:
- Match coding style (braces, spacing, etc.).
- If it is a feature, bugfix, or anything please only change the minimum amount of code required to satisfy the change.
- Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge.
- Pull requests must be made against the
main
branch. Any other branch (unless specified by the maintainers) will get rejected. - Check for existing issues first, before filing a new issue.