From ed3bd2bd80f17d15683f2a6a5ea8018b1a6b0874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=81=92?= <2390904403@qq.com> Date: Mon, 15 Sep 2025 15:53:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=96=B9=E6=B3=95&=E5=A2=9E=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 6 +++++- go.sum | 4 ++++ pkg/rpc/device.go | 20 ++++++++++---------- pkg/rpc/request.go | 13 ++++++++++++- pkg/rpc/server.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ pkg/rpc/type.go | 6 ++++++ 6 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 pkg/rpc/server.go diff --git a/go.mod b/go.mod index 84f76a4..4651d84 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,8 @@ go 1.24.3 require golang.org/x/net v0.43.0 -require golang.org/x/text v0.28.0 // indirect +require ( + go.uber.org/multierr v1.10.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/text v0.28.0 // indirect +) diff --git a/go.sum b/go.sum index 07413a4..dd0b128 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,7 @@ +go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= diff --git a/pkg/rpc/device.go b/pkg/rpc/device.go index 6f55ba1..6a3a212 100644 --- a/pkg/rpc/device.go +++ b/pkg/rpc/device.go @@ -5,16 +5,6 @@ import ( "time" ) -var device *Device - -// 获取设备相关RPC类 -func GetDevice() *Device { - if device == nil { - device = &Device{} - } - return device -} - // 设备相关RPC type Device struct{} @@ -176,3 +166,13 @@ func (d *Device) SaveUpgradeResult(upgradeTaskId uint32, status uint8, finishTim } return nil } + +var device *Device + +// 获取设备相关RPC类 +func GetDevice() *Device { + if device == nil { + device = &Device{} + } + return device +} diff --git a/pkg/rpc/request.go b/pkg/rpc/request.go index 8e943ee..5d50b99 100644 --- a/pkg/rpc/request.go +++ b/pkg/rpc/request.go @@ -13,6 +13,7 @@ import ( "os" "time" + "go.uber.org/zap" "golang.org/x/net/http2" ) @@ -24,6 +25,7 @@ type Request struct { port uint16 rootCertPath string client *http.Client + logger *zap.Logger } // 发送请求 @@ -58,11 +60,19 @@ func (r *Request) Send(methodName string, body any, responseBody any) error { return fmt.Errorf("response body json unmarshal fail: %v", err) } + if r.logger != nil { + r.logger.Debug("request: ", + zap.String("method", methodName), + zap.String("request", string(bodyByte)), + zap.String("response", string(responseBodyByte)), + ) + } + return nil } // 初始化 -func Initiate(host string, port uint16, rootCertPath string) error { +func Initiate(host string, port uint16, rootCertPath string, logger *zap.Logger) error { rootCert, err := os.ReadFile(rootCertPath) if err != nil { return fmt.Errorf("cert file read fail") @@ -70,6 +80,7 @@ func Initiate(host string, port uint16, rootCertPath string) error { defaultRequest.host = host defaultRequest.port = port defaultRequest.rootCertPath = rootCertPath + defaultRequest.logger = logger certPool := x509.NewCertPool() certPool.AppendCertsFromPEM(rootCert) diff --git a/pkg/rpc/server.go b/pkg/rpc/server.go new file mode 100644 index 0000000..9426115 --- /dev/null +++ b/pkg/rpc/server.go @@ -0,0 +1,46 @@ +package rpc + +import "fmt" + +// 服务相关RPC +type Server struct{} + +// 获取Websocket签名信息 +func (s *Server) GetWebsocketSignData(sign string) (*WebsocketSignData, error) { + body := map[string]any{ + "sign": sign, + } + result := &Result[WebsocketSignData]{} + if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil { + return nil, err + } + if result.Code != 0 { + return nil, fmt.Errorf("%s", result.Message) + } + return &result.Data, nil +} + +// 删除Websocket签名 +func (s *Server) DeleteWebsocketSign(sign string) error { + body := map[string]any{ + "sign": sign, + } + result := &Result[WebsocketSignData]{} + if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil { + return err + } + if result.Code != 0 { + return fmt.Errorf("%s", result.Message) + } + return nil +} + +var server *Server + +// 获取服务相关RPC类 +func GetServer() *Server { + if server == nil { + server = &Server{} + } + return server +} diff --git a/pkg/rpc/type.go b/pkg/rpc/type.go index f5d0bdb..ffabda4 100644 --- a/pkg/rpc/type.go +++ b/pkg/rpc/type.go @@ -66,3 +66,9 @@ type DeviceAttributeOption struct { Max *uint32 `json:"max,omitempty"` } `json:"attribute"` } + +// Websocket签名数据 +type WebsocketSignData struct { + UserId uint32 `json:"user_id"` + Platform string `json:"platform"` +}