rsocket / Rsocket Go
Licence: apache-2.0
rsocket-go implementation
Stars: ✭ 325
Labels
Projects that are alternatives of or similar to Rsocket Go
Purescript Flare
A special-purpose UI library for Purescript
Stars: ✭ 272 (-16.31%)
Mutual labels: reactive
Reactive Forms
(Angular Reactive) Forms with Benefits 😉
Stars: ✭ 276 (-15.08%)
Mutual labels: reactive
Vertx Jooq
A jOOQ-CodeGenerator to create vertx-ified DAOs and POJOs.
Stars: ✭ 299 (-8%)
Mutual labels: reactive
Rxkprefs
🛠 A small Kotlin library to make shared preferences easy + RxJava and Coroutines support
Stars: ✭ 264 (-18.77%)
Mutual labels: reactive
Nettosphere
A Java WebSocket/HTTP server based on the Atmosphere and Netty Framework
Stars: ✭ 321 (-1.23%)
Mutual labels: reactive
Fritz2
Easily build reactive web-apps in Kotlin based on flows and coroutines.
Stars: ✭ 308 (-5.23%)
Mutual labels: reactive
Mobx Keystone
A MobX powered state management solution based on data trees with first class support for Typescript, support for snapshots, patches and much more
Stars: ✭ 284 (-12.62%)
Mutual labels: reactive
Spark Notebook
Interactive and Reactive Data Science using Scala and Spark.
Stars: ✭ 3,081 (+848%)
Mutual labels: reactive
Entwine
Testing tools and utilities for Apple's Combine framework.
Stars: ✭ 306 (-5.85%)
Mutual labels: reactive
Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (-14.77%)
Mutual labels: reactive
Vueflux
♻️ Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux
Stars: ✭ 315 (-3.08%)
Mutual labels: reactive
Reflex Dom
Web applications without callbacks or side-effects. Reflex-DOM brings the power of functional reactive programming (FRP) to the web. Build HTML and other Document Object Model (DOM) data with a pure functional interface.
Stars: ✭ 301 (-7.38%)
Mutual labels: reactive
Mikado
Mikado is the webs fastest template library for building user interfaces.
Stars: ✭ 323 (-0.62%)
Mutual labels: reactive
Reactive Practice At Taobao
♨️ Reactive @ 淘宝 | Reactive实践、推动、落地的记录与大会分享 | Flow Arch(流式架构)/Reactive Programming(RP/反应式编程)
Stars: ✭ 314 (-3.38%)
Mutual labels: reactive
Rxgps
Finding current location cannot be easier on Android !
Stars: ✭ 307 (-5.54%)
Mutual labels: reactive
rsocket-go
rsocket-go is an implementation of the RSocket protocol in Go.
IT IS UNDER ACTIVE DEVELOPMENT, APIs are unstable and maybe change at any time until release of v1.0.0.
Features
- Design For Golang.
- Thin reactive-streams implementation.
- Simulate Java SDK API.
- Fast CLI (Compatible with https://github.com/rsocket/rsocket-cli).
- Installation:
go get github.com/rsocket/rsocket-go/cmd/rsocket-cli
- 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 get -u github.com/rsocket/rsocket-go
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
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].