rts-sim-testing-service/grpcproto/client.go

49 lines
1.1 KiB
Go

package apiproto
import (
context "context"
"go.uber.org/zap"
grpc "google.golang.org/grpc"
"joylink.club/bj-rtsts-server/config"
"joylink.club/bj-rtsts-server/dto"
)
// Centrifugo 实时消息传递客户端
var client CentrifugoApiClient
// Centrifugo 客户端初始化
func InitClient() {
conn, err := grpc.Dial(config.Config.Messaging.Centrifugo.Address, grpc.WithInsecure())
if err != nil {
panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err.Error()})
}
client = NewCentrifugoApiClient(conn)
}
// 返回 Centrifugo 客户端
func Cli() CentrifugoApiClient {
return client
}
// 发布消息
func PublishMsg(channalName string, data []byte) {
if len(data) == 0 {
return
}
resp, err := client.Publish(context.Background(), &PublishRequest{
Channel: channalName,
Data: data,
})
if err != nil {
zap.S().Errorf("Transport level error: %v \n", err)
} else {
if resp.GetError() != nil {
respError := resp.GetError()
zap.S().Errorf("Publish msg[%s] error %d(%s)\n", channalName, respError.Code, respError.Message)
} else {
zap.S().Debugf("[%s] Successfully published", channalName)
}
}
}