@@ -10,24 +10,86 @@ go get github.com/hyperf/roc
1010
1111## How to use
1212
13+ - action/foo_save_action.go
14+
15+ ``` go
16+ package action
17+
18+ import (
19+ " fmt"
20+ " github.com/hyperf/roc"
21+ " github.com/hyperf/roc/exception"
22+ " github.com/hyperf/roc/formatter"
23+ " github.com/hyperf/roc/serializer"
24+ )
25+
26+ type FooSaveAction struct {
27+ }
28+
29+ type FooSaveInput struct {
30+ Name string ` json:"name"`
31+ Gender int ` json:"gender"`
32+ }
33+ type FooSaveRequest struct {
34+ ID int ` json:"0"`
35+ Input FooSaveInput ` json:"1"`
36+ }
37+ type FooSaveResult struct {
38+ IsSuccess bool ` json:"is_success"`
39+ }
40+
41+ func (f *FooSaveAction ) Handle (packet *roc .Packet , serializer serializer .SerializerInterface ) (any , exception .ExceptionInterface ) {
42+ request := &formatter.JsonRPCRequest [*FooSaveRequest, any]{}
43+
44+ serializer.UnSerialize (packet.GetBody (), request)
45+
46+ fmt.Println (request)
47+
48+ return &FooSaveResult{
49+ IsSuccess: true ,
50+ }, nil
51+ }
52+ ```
53+
54+ - main.go
55+
1356``` go
1457package main
1558
1659import (
1760 " fmt"
1861 " github.com/hyperf/roc"
62+ " github.com/hyperf/roc/examples/json_rpc/action"
63+ " github.com/hyperf/roc/exception"
64+ " github.com/hyperf/roc/formatter"
65+ " github.com/hyperf/roc/router"
1966 " github.com/hyperf/roc/server"
20- " net"
2167)
2268
69+ func SetUpRouters () *router .SimpleRouter {
70+ r := router.NewSimpleRouter ()
71+ r.Add (" /foo/save" , &action.FooSaveAction {})
72+ return r
73+ }
74+
2375func main () {
24- serv := server.NewTcpServer (" 127.0.0.1:9501" , func (conn net.Conn , packet *roc.Packet , server *server.TcpServer ) {
25- id := packet.GetId ()
26- body := packet.GetBody ()
76+ r := SetUpRouters ()
77+
78+ handler := server.NewTcpServerHandler (func (route *formatter.JsonRPCRoute , packet *roc.Packet , server *server.TcpServer ) (any, exception.ExceptionInterface ) {
79+
80+ fmt.Println (route, packet)
2781
28- fmt.Println (id, body)
82+ action , ok := r.Routes [route.Path ]
83+ if !ok {
84+ return nil , &exception.Exception {Code: 404 , Message: " The route is not defined." }
85+ }
86+
87+ return action.Handle (packet, server.Serializer )
2988 })
3089
90+ serv := server.NewTcpServer (" 127.0.0.1:9501" , handler)
91+
3192 serv.Start ()
3293}
94+
3395```
0 commit comments