mirror of
https://github.com/autistic-symposium/backend-and-orchestration-toolkit.git
synced 2025-06-08 15:02:55 -04:00
🍛 Commit progress before lunch break
This commit is contained in:
parent
4cf49ba50b
commit
9aa9e827c0
19 changed files with 378 additions and 19 deletions
1
code/protocol_demos/grpc-demo/.gitignore
vendored
Normal file
1
code/protocol_demos/grpc-demo/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/node_modules
|
35
code/protocol_demos/grpc-demo/client.js
Normal file
35
code/protocol_demos/grpc-demo/client.js
Normal file
|
@ -0,0 +1,35 @@
|
|||
const grpc = require("grpc");
|
||||
const protoLoader = require("@grpc/proto-loader")
|
||||
const packageDef = protoLoader.loadSync("todo.proto", {});
|
||||
const grpcObject = grpc.loadPackageDefinition(packageDef);
|
||||
const todoPackage = grpcObject.todoPackage;
|
||||
|
||||
const text = process.argv[2];
|
||||
|
||||
const client = new todoPackage.Todo("localhost:40000",
|
||||
grpc.credentials.createInsecure())
|
||||
console.log(text)
|
||||
|
||||
client.createTodo({
|
||||
"id": -1,
|
||||
"text": text
|
||||
}, (err, response) => {
|
||||
|
||||
console.log("Recieved from server " + JSON.stringify(response))
|
||||
|
||||
})
|
||||
/*
|
||||
client.readTodos(null, (err, response) => {
|
||||
|
||||
console.log("read the todos from server " + JSON.stringify(response))
|
||||
if (!response.items)
|
||||
response.items.forEach(a=>console.log(a.text));
|
||||
})
|
||||
*/
|
||||
|
||||
const call = client.readTodosStream();
|
||||
call.on("data", item => {
|
||||
console.log("received item from server " + JSON.stringify(item))
|
||||
})
|
||||
|
||||
call.on("end", e => console.log("server done!"))
|
16
code/protocol_demos/grpc-demo/package.json
Normal file
16
code/protocol_demos/grpc-demo/package.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"name": "grpc-demo",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@grpc/proto-loader": "^0.5.3",
|
||||
"grpc": "^1.24.9"
|
||||
}
|
||||
}
|
38
code/protocol_demos/grpc-demo/server.js
Normal file
38
code/protocol_demos/grpc-demo/server.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
const grpc = require("grpc");
|
||||
const protoLoader = require("@grpc/proto-loader")
|
||||
const packageDef = protoLoader.loadSync("todo.proto", {});
|
||||
const grpcObject = grpc.loadPackageDefinition(packageDef);
|
||||
const todoPackage = grpcObject.todoPackage;
|
||||
|
||||
const server = new grpc.Server();
|
||||
server.bind("0.0.0.0:40000",
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
|
||||
server.addService(todoPackage.Todo.service,
|
||||
{
|
||||
"createTodo": createTodo,
|
||||
"readTodos" : readTodos,
|
||||
"readTodosStream": readTodosStream
|
||||
});
|
||||
server.start();
|
||||
|
||||
const todos = []
|
||||
function createTodo (call, callback) {
|
||||
const todoItem = {
|
||||
"id": todos.length + 1,
|
||||
"text": call.request.text
|
||||
}
|
||||
todos.push(todoItem)
|
||||
callback(null, todoItem);
|
||||
}
|
||||
|
||||
function readTodosStream(call, callback) {
|
||||
|
||||
todos.forEach(t => call.write(t));
|
||||
call.end();
|
||||
}
|
||||
|
||||
|
||||
function readTodos(call, callback) {
|
||||
callback(null, {"items": todos})
|
||||
}
|
21
code/protocol_demos/grpc-demo/todo.proto
Normal file
21
code/protocol_demos/grpc-demo/todo.proto
Normal file
|
@ -0,0 +1,21 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package todoPackage;
|
||||
|
||||
service Todo {
|
||||
rpc createTodo(TodoItem) returns (TodoItem);
|
||||
rpc readTodos(voidNoParam) returns (TodoItems);
|
||||
rpc readTodosStream(voidNoParam) returns (stream TodoItem);
|
||||
|
||||
}
|
||||
|
||||
message voidNoParam {}
|
||||
|
||||
message TodoItem {
|
||||
int32 id = 1;
|
||||
string text = 2;
|
||||
}
|
||||
|
||||
message TodoItems {
|
||||
repeated TodoItem items = 1;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue