qtalk-go is a versatile RPC and IO stream based IPC stack for Go:
- client or server can make RPC calls to the other end
- calls can be unary or streaming for multiple inputs/outputs
- pluggable data codecs for flexible object stream marshaling
- RPC calls designed to optionally become full-duplex byte streams
- muxing layer based on subset of SSH (qmux) and soon optionally QUIC
- qmux allows any
io.ReadWriteCloser
transport, including STDIO - API inspired by
net/http
with easy function/method export on top - supports passing remote callbacks over RPC
The goal was to come up with the most minimal design for the most flexibility in how you want to communicate between processes.
$ go get github.com/progrium/qtalk-go
The Examples wiki page walks through a bunch of ways it can be used. Here are quick links:
- Simple RPC
- Selector Routing
- Streaming Responses
- Bytestream Proxy
- Bidirectional Calling
- State Synchronization
MIT