🎵 Music-themed demo of a fully typed gRPC client and server implementation in TypeScript. It implements each RPC type (unary, client streaming, server streaming and bidirectional), and uses type definitions generated with grpc_tools_node_protoc_ts
.
The demo application takes the form of a CLI tool that allows you to manage and discuss your favourite songs. Watch demo.
Read the accompanying blog post [here]().
yarn
yarn clean
yarn build
yarn start serve
yarn start get-song
yarn start add-songs
The songs you add will be persisted to the local JSON store db.json
.
yarn start get-chat --songId <id>
yarn start chat
Say you set your username as mike
and you choose to discuss the song with id 10
. Then, the application will dump chat messages to a local file called chat-mike-10.txt
. You can observe messages as they come in:
watch cat chat-mike-10.txt
Go ahead and try running multiple chat clients at once!