Lightweight, modular RPC framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Arsen Musayelyan fbae725040 Add (*Server).HandleConn() 1 week ago
client Fix bug where the connection handler tries to access a channel before it has been created 2 weeks ago
codec Add introspection functions 3 weeks ago
examples Propagate context to requests 2 weeks ago
internal Use Convert() for arrays in reflectutil.ConvertSlice() 3 weeks ago
server Add (*Server).HandleConn() 1 week ago
LICENSE Initial Commit 4 weeks ago
README.md Clarify README 3 weeks ago
go.mod Set module go version to 1.17 3 weeks ago
go.sum Add WebSocket server support 3 weeks ago

README.md

lrpc

Go Reference Go Report Card

A lightweight RPC framework that aims to be as easy to use as possible, while also being as lightweight as possible. Most current RPC frameworks are bloated to the point of adding 7MB to my binary, like RPCX. That is what prompted me to create this.


Channels

This RPC framework supports creating channels to transfer data from server to client. My use-case for this is to implement watch functions and transfer progress in ITD, but it can be useful for many things.


Codec

When creating a server or client, a CodecFunc can be provided. An io.ReadWriter is passed into the CodecFunc and it returns a Codec, which is an interface that contains encode and decode functions with the same signature as json.Decoder.Decode() and json.Encoder.Encode().

This allows any codec to be used for the transfer of the data, making it easy to create clients in different languages.