mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-10 07:06:26 +00:00
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import * as grpc from '@grpc/grpc-js';
|
|
import * as flatbuffers from 'flatbuffers';
|
|
import {GreeterService, IGreeterServer} from './greeter_grpc';
|
|
import {HelloReply} from './models/hello-reply';
|
|
import {HelloRequest} from './models/hello-request';
|
|
|
|
const greeter: IGreeterServer = {
|
|
SayHello(
|
|
call: grpc.ServerUnaryCall<HelloRequest, HelloReply>,
|
|
callback: grpc.sendUnaryData<HelloReply>,
|
|
): void {
|
|
console.log(`SayHello ${call.request.name()}`);
|
|
const builder = new flatbuffers.Builder();
|
|
const offset = builder.createString(`welcome ${call.request.name()}`);
|
|
const root = HelloReply.createHelloReply(builder, offset);
|
|
builder.finish(root);
|
|
callback(
|
|
null,
|
|
HelloReply.getRootAsHelloReply(
|
|
new flatbuffers.ByteBuffer(builder.asUint8Array()),
|
|
),
|
|
);
|
|
},
|
|
async SayManyHellos(
|
|
call: grpc.ServerWritableStream<HelloRequest, HelloReply>,
|
|
): Promise<void> {
|
|
const name = call.request.name();
|
|
console.log(`${call.request.name()} saying hi in different langagues`);
|
|
['Hi', 'Hallo', 'Ciao'].forEach((element) => {
|
|
const builder = new flatbuffers.Builder();
|
|
const offset = builder.createString(`${element} ${name}`);
|
|
const root = HelloReply.createHelloReply(builder, offset);
|
|
builder.finish(root);
|
|
call.write(
|
|
HelloReply.getRootAsHelloReply(
|
|
new flatbuffers.ByteBuffer(builder.asUint8Array()),
|
|
),
|
|
);
|
|
});
|
|
call.end();
|
|
},
|
|
};
|
|
|
|
function serve(): void {
|
|
const PORT = 3000;
|
|
const server = new grpc.Server();
|
|
server.addService(GreeterService, greeter);
|
|
console.log(`Listening on ${PORT}`);
|
|
server.bindAsync(
|
|
`localhost:${PORT}`,
|
|
grpc.ServerCredentials.createInsecure(),
|
|
(err: Error | null, port: number) => {
|
|
if (err) {
|
|
console.error(`Server error: ${err.message}`);
|
|
} else {
|
|
console.log(`Server bound on port: ${port}`);
|
|
server.start();
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
serve();
|