boilerplate for grpc

This commit is contained in:
iamBadgers
2025-06-08 00:31:24 -07:00
parent 2d81203398
commit 4f126594e5
6 changed files with 52 additions and 28 deletions

View File

@@ -1,8 +1,8 @@
syntax = "proto3"; syntax = "proto3";
service CharacterManager { service CharacterManager {
rpc createCharacter(CreateCharacterRequest) returns (CreateCharacterResponse); rpc createCharacter(CreateCharacterRequest) returns (Character);
rpc getCharacter(GetCharacterRequest) returns (GetCharacterResponse); rpc getCharacter(GetCharacterRequest) returns (Character);
} }
message Character { message Character {
@@ -13,8 +13,4 @@ message Character {
message CreateCharacterRequest {} message CreateCharacterRequest {}
message CreateCharacterResponse {} message GetCharacterRequest {}
message GetCharacterRequest {}
message GetCharacterResponse {}

View File

@@ -15,6 +15,7 @@ COPY vault .
RUN npm install -g protoc RUN npm install -g protoc
RUN npm install -g protoc-gen-ts RUN npm install -g protoc-gen-ts
RUN npm run build_protos
RUN npm run build RUN npm run build
EXPOSE 8080 EXPOSE 8080

View File

@@ -1,11 +1,17 @@
import js from "@eslint/js"; import js from '@eslint/js'
import globals from "globals"; import globals from 'globals'
import tseslint from "typescript-eslint"; import tseslint from 'typescript-eslint'
import { defineConfig } from "eslint/config"; import { defineConfig } from 'eslint/config'
export default defineConfig([ export default defineConfig([
{ files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], plugins: { js }, extends: ["js/recommended"] }, {
{ files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], languageOptions: { globals: globals.node } }, files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
plugins: { js },
extends: ['js/recommended'],
},
{
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
languageOptions: { globals: globals.node },
},
tseslint.configs.recommended, tseslint.configs.recommended,
]); ])

View File

@@ -1,13 +1,13 @@
import * as grpc from '@grpc/grpc-js' import { Server, ServerCredentials } from '@grpc/grpc-js'
import { initCharacterService } from './character_service' import { initCharacterService } from './character_service'
const port = 8000; const port = 8000
const app = new grpc.Server() const app = new Server()
initCharacterService(app) initCharacterService(app)
app.bindAsync("0.0.0.0:8000", grpc.ServerCredentials.createInsecure(), () => { app.bindAsync('0.0.0.0:8080', ServerCredentials.createInsecure(), () => {
console.log("Starting server at 0.0.0.0:8000") console.log('Starting server at 0.0.0.0:8080')
}) })

View File

@@ -1,10 +1,31 @@
import * as grpc from '@grpc/grpc-js' import { Server, ServerUnaryCall, sendUnaryData } from '@grpc/grpc-js'
import { Character, GetCharacterRequest, GetCharacterResponse } from './proto/character' import {
UnimplementedCharacterManagerService,
Character,
GetCharacterRequest,
CreateCharacterRequest,
} from './proto/character'
export function initCharacterService(server: grpc.Server) { export function initCharacterService(server: Server) {
server.addService(UnimplementedCharacterManagerService.definition, {
createCharacter: createCharacter_Call,
getCharacter: getCharacter_Call,
})
} }
function getCharacter(request: GetCharacterRequest): GetCharacterResponse { function createCharacter_Call(call: ServerUnaryCall<CreateCharacterRequest, Character>, callback: sendUnaryData<Character>) {
return new GetCharacterResponse() callback(null, createCharacter(call.request))
} }
function createCharacter(request: CreateCharacterRequest): Character {
return new Character()
}
function getCharacter_Call(call: ServerUnaryCall<GetCharacterRequest, Character>, callback: sendUnaryData<Character>) {
callback(null, getCharacter(call.request))
}
function getCharacter(request: GetCharacterRequest): Character {
return new Character()
}

View File

@@ -8,4 +8,4 @@
"outDir": "dist" "outDir": "dist"
}, },
"lib": ["es2015"] "lib": ["es2015"]
} }