# README
rsocket-go
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 hello_world --setup setup_me tcp://127.0.0.1:7878
- Installation:
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
# Packages
Package balancer defines APIs for load balancing in RSocket.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
Connect create a new RSocket client builder with default settings.
FireAndForget register request handler for FireAndForget.
GetAddr returns the address info of given RSocket.
MetadataPush register request handler for MetadataPush.
NewAbstractSocket returns an abstract implementation of RSocket.
Receive receives server connections from client RSockets.
RequestChannel register request handler for RequestChannel.
RequestResponse register request handler for RequestResponse.
RequestStream register request handler for RequestStream.
TCPClient creates a new TCPClientBuilder.
TCPServer creates a new TCPServerBuilder.
UnixClient creates a new UnixClientBuilder.
UnixServer creates a new UnixServerBuilder.
WebsocketClient creates a new WebsocketClientBuilder.
WebsocketServer creates a new WebsocketServerBuilder.
WithClientResumeToken creates a resume token generator.
WithServerResumeSessionDuration sets resume session duration for RSocket server.
# Constants
DefaultPort is the default port RSocket used.
DefaultUnixSockPath is the default UDS sock file path.
ErrorCodeApplicationError means application layer logic generating a Reactive Streams onError event.
ErrorCodeCanceled means the Responder canceled the request but may have started processing it (similar to REJECTED but doesn't guarantee lack of side-effects).
ErrorCodeConnectionClose means the connection is being terminated.
ErrorCodeConnectionError means the connection is being terminated.
ErrorCodeInvalid means the request is invalid.
ErrorCodeInvalidSetup means the setup frame is invalid for the server.
ErrorCodeRejected means Responder reject it.
ErrorCodeRejectedResume means server rejected the resume, it can specify the reason in the payload.
ErrorCodeRejectedSetup means server rejected the setup, it can specify the reason in the payload.
ErrorCodeUnsupportedSetup means some (or all) of the parameters specified by the client are unsupported by the server.
# Structs
TCPClientBuilder provides builder which can be used to create a client-side TCP transport easily.
TCPServerBuilder provides builder which can be used to create a server-side TCP transport easily.
UnixClientBuilder provides builder which can be used to create a client-side UDS transport easily.
UnixServerBuilder provides builder which can be used to create a server-side UDS transport easily.
WebsocketClientBuilder provides builder which can be used to create a client-side Websocket transport easily.
WebsocketServerBuilder provides builder which can be used to create a server-side Websocket transport easily.
# Interfaces
Client is Client Side of a RSocket socket.
ClientBuilder can be used to build a RSocket client.
ClientStarter can be used to start a client.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
ToClientStarter is used to build a RSocket client with custom Transport.
No description provided by the author
# Type aliases
No description provided by the author
ClientSocketAcceptor is alias for RSocket handler function.
Aliases for Error defines.
Aliases for Error defines.
No description provided by the author
No description provided by the author
No description provided by the author