pubsub-server/grpc/index.js

34 lines
907 B
JavaScript
Raw Permalink Normal View History

2022-07-25 02:33:35 +00:00
import grpc from '@grpc/grpc-js';
import proto from '@grpc/proto-loader';
export function loadPubSub() {
const PROTO_PATH = 'grpc/service.proto';
const packageDefinition = proto.loadSync(PROTO_PATH, {});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
return protoDescriptor.pubsub;
}
export function setupgRPC(handler) {
const server = new grpc.Server();
const pubsub = loadPubSub();
server.addService(pubsub.PubSub.service, handler)
return server
}
export function createClient(address) {
const pubsub = loadPubSub()
return new pubsub.PubSub(address, grpc.credentials.createInsecure());
}
export function startServer(
address,
handler,
logger,
) {
const server = setupgRPC(handler)
server.bindAsync(address, grpc.ServerCredentials.createInsecure(), () => {
logger.info(`Started server on ${address}`)
server.start();
});
return server
}