From b8b079b7dbd47df043ab25b38a23ba43387ac9d2 Mon Sep 17 00:00:00 2001 From: "Chakhsu.Lau" Date: Sat, 20 Jan 2024 23:11:17 +0800 Subject: [PATCH] feat: add simple example --- example/asyncStream/loader.js | 2 ++ example/helloworld/loader.js | 2 ++ example/reflection/loader.js | 2 ++ example/simple/client.js | 12 ++++++++++++ example/simple/loader.js | 13 +++++++++++++ example/simple/server.js | 18 ++++++++++++++++++ example/simple/service.proto | 11 +++++++++++ example/stream/loader.js | 2 ++ 8 files changed, 62 insertions(+) create mode 100644 example/simple/client.js create mode 100644 example/simple/loader.js create mode 100644 example/simple/server.js create mode 100644 example/simple/service.proto diff --git a/example/asyncStream/loader.js b/example/asyncStream/loader.js index 5a84b11..47be203 100644 --- a/example/asyncStream/loader.js +++ b/example/asyncStream/loader.js @@ -1,4 +1,6 @@ import { ProtoLoader } from '../../lib/index.js' +// same as import { ProtoLoader } from 'grpcity' + import path from 'node:path' import { fileURLToPath } from 'node:url' diff --git a/example/helloworld/loader.js b/example/helloworld/loader.js index 6bfd22d..2222739 100644 --- a/example/helloworld/loader.js +++ b/example/helloworld/loader.js @@ -1,4 +1,6 @@ import { ProtoLoader } from '../../lib/index.js' +// same as import { ProtoLoader } from 'grpcity' + import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' diff --git a/example/reflection/loader.js b/example/reflection/loader.js index e67ac8d..4ad9fc2 100644 --- a/example/reflection/loader.js +++ b/example/reflection/loader.js @@ -1,4 +1,6 @@ import { ProtoLoader } from '../../lib/index.js' +// same as import { ProtoLoader } from 'grpcity' + import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' diff --git a/example/simple/client.js b/example/simple/client.js new file mode 100644 index 0000000..79dabc5 --- /dev/null +++ b/example/simple/client.js @@ -0,0 +1,12 @@ +import { loader } from './loader.js' + +const start = async (addr) => { + await loader.init() + const clients = await loader.initClients({ services: { 'simple.Hellor': addr } }) + + const client = clients.get('simple.Hellor') + const { response } = await client.sayHello({ message: 'grpcity' }) + console.log(response) +} + +start('localhost:5051') diff --git a/example/simple/loader.js b/example/simple/loader.js new file mode 100644 index 0000000..8441add --- /dev/null +++ b/example/simple/loader.js @@ -0,0 +1,13 @@ +import { ProtoLoader } from '../../lib/index.js' +// same as import { ProtoLoader } from 'grpcity' + +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +// get this file dir path +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +export const loader = new ProtoLoader({ + location: path.join(__dirname, './'), + files: ['service.proto'] +}) diff --git a/example/simple/server.js b/example/simple/server.js new file mode 100644 index 0000000..e831a52 --- /dev/null +++ b/example/simple/server.js @@ -0,0 +1,18 @@ +import { loader } from './loader.js' + +const start = async (addr) => { + await loader.init() + const server = await loader.initServer() + + const implementation = { + sayHello: async (call) => { + return { message: `I got your message: ${call.request.message}` } + } + } + + server.add('simple.Hellor', implementation) + await server.listen(addr) + console.log('start:', addr) +} + +start('localhost:5051') diff --git a/example/simple/service.proto b/example/simple/service.proto new file mode 100644 index 0000000..b4d62c4 --- /dev/null +++ b/example/simple/service.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package simple; + +service Hellor { + rpc sayHello (Message) returns (Message) {} +} + +message Message { + string message = 1; +} diff --git a/example/stream/loader.js b/example/stream/loader.js index 5a84b11..47be203 100644 --- a/example/stream/loader.js +++ b/example/stream/loader.js @@ -1,4 +1,6 @@ import { ProtoLoader } from '../../lib/index.js' +// same as import { ProtoLoader } from 'grpcity' + import path from 'node:path' import { fileURLToPath } from 'node:url'