blob: 47c2f8998a4e61cecab17fda13a209e8ccede425 [file] [log] [blame]
Austin Schuh272c6132020-11-14 16:37:52 -08001import grpc from 'grpc';
2import { HelloReply, HelloRequest } from './greeter_generated';
3import { IGreeterServer, GreeterService } from './greeter_grpc';
4import { flatbuffers } from 'flatbuffers';
5
6class GreeterServer implements IGreeterServer {
7
8 SayHello(call: grpc.ServerUnaryCall<HelloRequest>, callback: grpc.sendUnaryData<HelloReply>): void {
9 console.log(`${call.request.name()}`);
10 const builder = new flatbuffers.Builder();
11 const offset = builder.createString(`welcome ${call.request.name()}`);
12 const root = HelloReply.createHelloReply(builder, offset);
13 builder.finish(root);
14 callback(null, HelloReply.getRootAsHelloReply(new flatbuffers.ByteBuffer(builder.asUint8Array())));
15 }
16
17 async SayManyHellos(call: grpc.ServerWritableStream<HelloRequest>): Promise<void> {
18 const name = call.request.name();
19 console.log(`${call.request.name()} saying hi in different langagues`);
20 ['Hi', 'Hallo', 'Ciao'].forEach(element => {
21 const builder = new flatbuffers.Builder();
22 const offset = builder.createString(`${element} ${name}`);
23 const root = HelloReply.createHelloReply(builder, offset);
24 builder.finish(root);
25 call.write(HelloReply.getRootAsHelloReply(new flatbuffers.ByteBuffer(builder.asUint8Array())))
26 });
27 call.end();
28 }
29}
30
31function serve(): void {
32 const PORT = 3000;
33 const server = new grpc.Server();
34 server.addService<IGreeterServer>(GreeterService, new GreeterServer());
35 console.log(`Listening on ${PORT}`);
36 server.bind(`localhost:${PORT}`, grpc.ServerCredentials.createInsecure());
37 server.start();
38}
39
40serve();