go get github.com/dollarkillerx/light
https://github.com/dollarkillerx/light/tree/main/examples/helloworld
type Request struct {
Name string
}
type Response struct {
RPName string
}
Note: The service name and method name must be public !!!
func main() {
ser := server.NewServer()
err := ser.RegisterName(&Demo{}, "Demo") // Service Instance, Service Name
if err != nil {
log.Fatalln(err)
}
if err := ser.Run(server.UseTCP("0.0.0.0:8074")); err != nil {
log.Fatalln(err)
}
}
type Demo struct{}
func (s *Demo) HelloWorld(ctx *light.Context, req *Request, resp *Response) error {
resp.RPName = fmt.Sprintf("hello world by: %s", req.Name)
//return errors.New(":xx")
//fmt.Println(resp)
return nil
}
func main() {
client := client.NewClient(discovery.NewSimplePeerToPeer("127.0.0.1:8074", transport.TCP))
connect, err := client.NewConnect("Demo")
if err != nil {
log.Fatalln(err)
return
}
resp := Response{}
err = connect.Call(light.DefaultCtx(), "HelloWorld", &Request{Name: "hello"}, &resp)
if err != nil {
log.Fatalln(err)
}
fmt.Println(resp)
}