Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/progrium/qtalk-go

versatile stream IO and RPC based IPC stack for Go
https://github.com/progrium/qtalk-go

golang ipc rpc

Last synced: 2 months ago
JSON representation

versatile stream IO and RPC based IPC stack for Go

Awesome Lists containing this project

README

        

# qtalk-go
[![GoDoc](https://godoc.org/github.com/progrium/qtalk-go?status.svg)](https://godoc.org/github.com/progrium/qtalk-go)
Test workflow
[![Go Report Card](https://goreportcard.com/badge/github.com/progrium/qtalk-go)](https://goreportcard.com/report/github.com/progrium/qtalk-go)
@progriumHQ on Twitter
Project Forum
Sponsor Project

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.

## Getting Started
```
$ go get github.com/progrium/qtalk-go
```
The [Examples](https://github.com/progrium/qtalk-go/wiki/Examples) wiki page walks through a bunch of ways it can be used. Here are quick links:
* [Simple RPC](https://github.com/progrium/qtalk-go/wiki/Examples#simple-rpc)
* [Selector Routing](https://github.com/progrium/qtalk-go/wiki/Examples#selector-routing)
* [Streaming Responses](https://github.com/progrium/qtalk-go/wiki/Examples#streaming-responses)
* [Bytestream Proxy](https://github.com/progrium/qtalk-go/wiki/Examples#bytestream-proxy)
* [Bidirectional Calling](https://github.com/progrium/qtalk-go/wiki/Examples#reverse-roles-bidirectional-calling)
* [State Synchronization](https://github.com/progrium/qtalk-go/wiki/Examples#state-synchronization)

## License

MIT