Roc
π Roc is a rpc micro framework,it designed with go,and transport protocol by rsocket-go.
IT IS UNDER ACTIVE DEVELOPMENT, APIs are unstable and maybe change at any time until release of v1.0.0.
π Features
- Simple to use β¨
- Lightweight β¨
- High performance β¨
- Service discovery β¨
- Support websocket and socket same time β¨
- Support json or gogo proto when use rpc β¨
π± Quick start
GO111MODULE=on go get github.com/go-roc/roc/cmd/protoc-gen-roc
protoc --roc_out = plugins = roc:.*.proto
package main
import (
"tutorials/app/api/api.hello/say"
"tutorials/proto/phello"
"github.com/go-roc/roc/service"
)
func main() {
s := service.New(
service.HttpAddress("0.0.0.0:9999"),
service.Namespace("api.hello"),
service.TCPAddress("0.0.0.0:8888"),
service.WssAddress("0.0.0.0:10000", "/hello"),
)
phello.RegisterHelloServer(s.Server(), &say.Say{})
_ = s.Run()
}
package main
import (
"fmt"
"github.com/go-roc/roc/config"
)
//put key/value to etcd:
//go:generate etcdctl put configroc/v1.0.0/public/roc.test "{ "name":"roc", "age":18 }"
func main() {
//new config use default option
config.NewConfig()
var result struct {
Name string `json:"name"`
Age int `json:"age"`
}
_ = config.DecodePublic("test", v)
}
ποΈ see more example for more help.
π« How to reach me and be a contributor ...
β¨ TODO β¨
- broadcast
- topic publish/subscript
- sidecar
- more example
- more singleton tests
- generate dir
- command for request service
- sidecar service
- config service
- broker redirect request service
- logger service
- simple service GUI