James Kuszmaul | 8e62b02 | 2022-03-22 09:33:25 -0700 | [diff] [blame^] | 1 | import * as grpc from '@grpc/grpc-js'; |
| 2 | import * as flatbuffers from 'flatbuffers'; |
| 3 | import { HelloReply } from './models/hello-reply'; |
| 4 | import { HelloRequest } from './models/hello-request'; |
| 5 | import { IGreeterServer, GreeterService } from './greeter_grpc'; |
| 6 | |
| 7 | const greeter: IGreeterServer = { |
| 8 | SayHello(call: grpc.ServerUnaryCall<HelloRequest, HelloReply>, callback: grpc.sendUnaryData<HelloReply>): void { |
| 9 | console.log(`SayHello ${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 | async SayManyHellos(call: grpc.ServerWritableStream<HelloRequest, HelloReply>): Promise<void> { |
| 17 | const name = call.request.name(); |
| 18 | console.log(`${call.request.name()} saying hi in different langagues`); |
| 19 | ['Hi', 'Hallo', 'Ciao'].forEach(element => { |
| 20 | const builder = new flatbuffers.Builder(); |
| 21 | const offset = builder.createString(`${element} ${name}`); |
| 22 | const root = HelloReply.createHelloReply(builder, offset); |
| 23 | builder.finish(root); |
| 24 | call.write(HelloReply.getRootAsHelloReply(new flatbuffers.ByteBuffer(builder.asUint8Array()))) |
| 25 | }); |
| 26 | call.end(); |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | function serve(): void { |
| 31 | const PORT = 3000; |
| 32 | const server = new grpc.Server(); |
| 33 | server.addService(GreeterService, greeter); |
| 34 | console.log(`Listening on ${PORT}`); |
| 35 | server.bindAsync( |
| 36 | `localhost:${PORT}`, |
| 37 | grpc.ServerCredentials.createInsecure(), |
| 38 | (err: Error | null, port: number) => { |
| 39 | if (err) { |
| 40 | console.error(`Server error: ${err.message}`); |
| 41 | } else { |
| 42 | console.log(`Server bound on port: ${port}`); |
| 43 | server.start(); |
| 44 | } |
| 45 | } |
| 46 | ); |
| 47 | } |
| 48 | |
| 49 | serve(); |