{"id":18556373,"url":"https://github.com/rsocket/rsocket-go","last_synced_at":"2025-05-15T05:07:26.865Z","repository":{"id":37706323,"uuid":"81940509","full_name":"rsocket/rsocket-go","owner":"rsocket","description":"rsocket-go implementation","archived":false,"fork":false,"pushed_at":"2025-02-07T03:39:39.000Z","size":6752,"stargazers_count":516,"open_issues_count":10,"forks_count":45,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-04-10T10:09:57.713Z","etag":null,"topics":["go","golang","reactive","rsocket"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsocket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-14T11:53:52.000Z","updated_at":"2025-04-08T16:58:13.000Z","dependencies_parsed_at":"2022-08-08T21:16:16.374Z","dependency_job_id":"da739154-8d75-403c-8d11-be105083de3f","html_url":"https://github.com/rsocket/rsocket-go","commit_stats":{"total_commits":194,"total_committers":15,"mean_commits":"12.933333333333334","dds":0.3298969072164949,"last_synced_commit":"473989b43c9524185babd293a088cad842e0061a"},"previous_names":[],"tags_count":71,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsocket%2Frsocket-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsocket%2Frsocket-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsocket%2Frsocket-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsocket%2Frsocket-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsocket","download_url":"https://codeload.github.com/rsocket/rsocket-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","reactive","rsocket"],"created_at":"2024-11-06T21:30:06.996Z","updated_at":"2025-05-15T05:07:21.857Z","avatar_url":"https://github.com/rsocket.png","language":"Go","readme":"# rsocket-go\n![logo](./logo.jpg)\n\n![GitHub Workflow Status](https://github.com/rsocket/rsocket-go/workflows/Go/badge.svg)\n[![codecov](https://codecov.io/gh/rsocket/rsocket-go/branch/master/graph/badge.svg)](https://codecov.io/gh/rsocket/rsocket-go)\n[![Go Report Card](https://goreportcard.com/badge/github.com/rsocket/rsocket-go)](https://goreportcard.com/report/github.com/rsocket/rsocket-go)\n[![GoDoc](https://godoc.org/github.com/rsocket/rsocket-go?status.svg)](https://godoc.org/github.com/rsocket/rsocket-go)\n![License](https://img.shields.io/github/license/rsocket/rsocket-go.svg)\n[![GitHub Release](https://img.shields.io/github/release-pre/rsocket/rsocket-go.svg)](https://github.com/rsocket/rsocket-go/releases)\n\n\u003e rsocket-go is an implementation of the [RSocket](http://rsocket.io/) protocol in Go.\n\n## Features\n - Design For Golang.\n - Thin [reactive-streams](http://www.reactive-streams.org/) implementation.\n - Simulate Java SDK API.\n - Fast CLI (Compatible with [https://github.com/rsocket/rsocket-cli](https://github.com/rsocket/rsocket-cli/)).\n   - Installation: `go install github.com/rsocket/rsocket-go/cmd/rsocket-cli@latest`\n   - Example: `rsocket-cli --request -i hello_world --setup setup_me tcp://127.0.0.1:7878`\n\n## Install\n\n\u003e Minimal go version is ***1.11***.\n\n```shell\n$ go install github.com/rsocket/rsocket-go/cmd/rsocket-cli@latest\n```\n\n## Quick Start\n\n\u003e Start an echo server\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/rsocket/rsocket-go\"\n\t\"github.com/rsocket/rsocket-go/payload\"\n\t\"github.com/rsocket/rsocket-go/rx/mono\"\n)\n\nfunc main() {\n\terr := rsocket.Receive().\n\t\tAcceptor(func(ctx context.Context, setup payload.SetupPayload, sendingSocket rsocket.CloseableRSocket) (rsocket.RSocket, error) {\n\t\t\t// bind responder\n\t\t\treturn rsocket.NewAbstractSocket(\n\t\t\t\trsocket.RequestResponse(func(msg payload.Payload) mono.Mono {\n\t\t\t\t\treturn mono.Just(msg)\n\t\t\t\t}),\n\t\t\t), nil\n\t\t}).\n\t\tTransport(rsocket.TCPServer().SetAddr(\":7878\").Build()).\n\t\tServe(context.Background())\n\tlog.Fatalln(err)\n}\n\n```\n\n\u003e Connect to echo server\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/rsocket/rsocket-go\"\n\t\"github.com/rsocket/rsocket-go/payload\"\n)\n\nfunc main() {\n\t// Connect to server\n\tcli, err := rsocket.Connect().\n\t\tSetupPayload(payload.NewString(\"Hello\", \"World\")).\n\t\tTransport(rsocket.TCPClient().SetHostAndPort(\"127.0.0.1\", 7878).Build()).\n\t\tStart(context.Background())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer cli.Close()\n\t// Send request\n\tresult, err := cli.RequestResponse(payload.NewString(\"你好\", \"世界\")).Block(context.Background())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tlog.Println(\"response:\", result)\n}\n```\n\n\u003e NOTICE: more server examples are [Here](examples/echo/echo.go)\n\n## Advanced\n\n*rsocket-go* provides TCP/Websocket transport implementations by default. Since `v0.6.0`, you can use `core` package to implement your own RSocket transport.\nI created an example project which show how to implement an unofficial [QUIC](https://en.wikipedia.org/wiki/QUIC) transport.\nYou can see [rsocket-transport-quic](https://github.com/jjeffcaii/rsocket-transport-quic) if you are interested.\n\n## TODO\n\n- [ ] Wiki\n- [ ] UT: 90% coverage\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsocket%2Frsocket-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsocket%2Frsocket-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsocket%2Frsocket-go/lists"}