rsocket
rsocket-go
Go

rsocket-go implementation

Last updated Jun 15, 2026
523
Stars
44
Forks
8
Issues
0
Stars/day
Attention Score
60
Language breakdown
Go 99.9%
Just 0.1%
Files click to expand
README

rsocket-go

logo

GitHub Workflow Status codecov Go Report Card GoDoc License GitHub Release

rsocket-go is an implementation of the RSocket protocol in Go.

Features

- Design For Golang. - Thin reactive-streams implementation. - Simulate Java SDK API. - Fast CLI (Compatible with https://github.com/rsocket/rsocket-cli). - Installation: go install github.com/rsocket/rsocket-go/cmd/rsocket-cli@latest - Example: rsocket-cli --request -i helloworld --setup setupme tcp://127.0.0.1:7878

Install

Minimal go version is 1.11.
$ go install github.com/rsocket/rsocket-go/cmd/rsocket-cli@latest

Quick Start

Start an echo server
package main

import ( "context" "log"

"github.com/rsocket/rsocket-go" "github.com/rsocket/rsocket-go/payload" "github.com/rsocket/rsocket-go/rx/mono" )

func main() { err := rsocket.Receive(). Acceptor(func(ctx context.Context, setup payload.SetupPayload, sendingSocket rsocket.CloseableRSocket) (rsocket.RSocket, error) { // bind responder return rsocket.NewAbstractSocket( rsocket.RequestResponse(func(msg payload.Payload) mono.Mono { return mono.Just(msg) }), ), nil }). Transport(rsocket.TCPServer().SetAddr(":7878").Build()). Serve(context.Background()) log.Fatalln(err) }

Connect to echo server
package main

import ( "context" "log"

"github.com/rsocket/rsocket-go" "github.com/rsocket/rsocket-go/payload" )

func main() { // Connect to server cli, err := rsocket.Connect(). SetupPayload(payload.NewString("Hello", "World")). Transport(rsocket.TCPClient().SetHostAndPort("127.0.0.1", 7878).Build()). Start(context.Background()) if err != nil { panic(err) } defer cli.Close() // Send request result, err := cli.RequestResponse(payload.NewString("你好", "世界")).Block(context.Background()) if err != nil { panic(err) } log.Println("response:", result) }

NOTICE: more server examples are Here

Advanced

rsocket-go provides TCP/Websocket transport implementations by default. Since v0.6.0, you can use core package to implement your own RSocket transport. I created an example project which show how to implement an unofficial QUIC transport. You can see rsocket-transport-quic if you are interested.

TODO

  • [ ] Wiki
  • [ ] UT: 90% coverage
🔗 More in this category

© 2026 GitRepoTrend · rsocket/rsocket-go · Updated daily from GitHub