1 import grpc from 'grpc';
2 import { HelloReply } from './models/hello-reply';
3 import { HelloRequest } from './models/hello-request';
4 import { IGreeterServer, GreeterService } from './greeter_grpc';
5 import { flatbuffers } from 'flatbuffers';
7 class GreeterServer implements IGreeterServer {
9 SayHello(call: grpc.ServerUnaryCall<HelloRequest>, callback: grpc.sendUnaryData<HelloReply>): void {
10 console.log(`SayHello ${call.request.name()}`);
11 const builder = new flatbuffers.Builder();
12 const offset = builder.createString(`welcome ${call.request.name()}`);
13 const root = HelloReply.createHelloReply(builder, offset);
15 callback(null, HelloReply.getRootAsHelloReply(new flatbuffers.ByteBuffer(builder.asUint8Array())));
18 async SayManyHellos(call: grpc.ServerWritableStream<HelloRequest>): Promise<void> {
19 const name = call.request.name();
20 console.log(`${call.request.name()} saying hi in different langagues`);
21 ['Hi', 'Hallo', 'Ciao'].forEach(element => {
22 const builder = new flatbuffers.Builder();
23 const offset = builder.createString(`${element} ${name}`);
24 const root = HelloReply.createHelloReply(builder, offset);
26 call.write(HelloReply.getRootAsHelloReply(new flatbuffers.ByteBuffer(builder.asUint8Array())))
32 function serve(): void {
34 const server = new grpc.Server();
35 server.addService<IGreeterServer>(GreeterService, new GreeterServer());
36 console.log(`Listening on ${PORT}`);
37 server.bind(`localhost:${PORT}`, grpc.ServerCredentials.createInsecure());