Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/progrium/qtalk-go
- Owner: progrium
- License: mit
- Created: 2021-05-19T19:12:13.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-23T22:45:10.000Z (about 1 year ago)
- Last Synced: 2024-06-20T22:53:34.087Z (7 months ago)
- Topics: golang, ipc, rpc
- Language: Go
- Homepage:
- Size: 187 KB
- Stars: 40
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
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)
[![Go Report Card](https://goreportcard.com/badge/github.com/progrium/qtalk-go)](https://goreportcard.com/report/github.com/progrium/qtalk-go)
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 RPCThe 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