优化机器人测试输入出
This commit is contained in:
parent
ce0cc9385f
commit
7223f11afb
33
cmd/robot/friend.go
Normal file
33
cmd/robot/friend.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (r *Robot) handleFriendMsg(msg *pb.UserMessage) {
|
||||||
|
switch msg.SubType {
|
||||||
|
case "add":
|
||||||
|
r.handleFriendAdd(msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加好友
|
||||||
|
func (r *Robot) FriendAdd() {
|
||||||
|
req := &pb.FriendAddReq{}
|
||||||
|
head := &pb.UserMessage{MainType: "friend", SubType: "add"}
|
||||||
|
defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req)
|
||||||
|
err := r.SendToClient(head, req)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Robot) handleFriendAdd(msg *pb.UserMessage) {
|
||||||
|
rsp := &pb.FriendAddRsp{}
|
||||||
|
if !comm.ProtoDecode(msg, rsp) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
printReply(msg, rsp)
|
||||||
|
}
|
@ -2,7 +2,6 @@ package robot
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"go_dreamfactory/comm"
|
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
"go_dreamfactory/utils"
|
"go_dreamfactory/utils"
|
||||||
"log"
|
"log"
|
||||||
@ -10,7 +9,6 @@ import (
|
|||||||
|
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
"github.com/nacos-group/nacos-sdk-go/util"
|
"github.com/nacos-group/nacos-sdk-go/util"
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type LoginParam struct {
|
type LoginParam struct {
|
||||||
@ -21,14 +19,14 @@ type LoginParam struct {
|
|||||||
|
|
||||||
func (r *Robot) BuildSecStr() string {
|
func (r *Robot) BuildSecStr() string {
|
||||||
jsonByte, _ := jsoniter.Marshal(&LoginParam{
|
jsonByte, _ := jsoniter.Marshal(&LoginParam{
|
||||||
Account: r.Opts.Account,
|
Account: r.opts.Account,
|
||||||
ServerId: r.Opts.ServerId,
|
ServerId: r.opts.ServerId,
|
||||||
TimeStamp: time.Now().Unix(),
|
TimeStamp: time.Now().Unix(),
|
||||||
})
|
})
|
||||||
jsonBase64 := utils.Base64Encode(jsonByte)
|
jsonBase64 := utils.Base64Encode(jsonByte)
|
||||||
log.Printf("client base64:%s", jsonBase64)
|
// log.Printf("client base64:%s", jsonBase64)
|
||||||
clientMd5key := util.Md5(jsonBase64)
|
clientMd5key := util.Md5(jsonBase64)
|
||||||
log.Printf("client md5:%s", clientMd5key)
|
// log.Printf("client md5:%s", clientMd5key)
|
||||||
return fmt.Sprintf("CE:%s%s", clientMd5key, jsonBase64)
|
return fmt.Sprintf("CE:%s%s", clientMd5key, jsonBase64)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,7 +34,7 @@ func (r *Robot) BuildSecStr() string {
|
|||||||
func (r *Robot) AccountLogin() {
|
func (r *Robot) AccountLogin() {
|
||||||
//登录
|
//登录
|
||||||
sec := r.BuildSecStr()
|
sec := r.BuildSecStr()
|
||||||
log.Printf("client secret key:%s", sec)
|
// log.Printf("client secret key:%s", sec)
|
||||||
loginReg := &pb.UserLoginReq{
|
loginReg := &pb.UserLoginReq{
|
||||||
Sec: sec,
|
Sec: sec,
|
||||||
}
|
}
|
||||||
@ -45,13 +43,11 @@ func (r *Robot) AccountLogin() {
|
|||||||
MainType: "user",
|
MainType: "user",
|
||||||
SubType: "login",
|
SubType: "login",
|
||||||
}
|
}
|
||||||
if comm.ProtoEncode(loginReg, head) {
|
defer traceFunc(head.MainType, head.SubType, "0", loginReg)
|
||||||
data, _ := proto.Marshal(head)
|
err := r.SendToClient(head, loginReg)
|
||||||
err := r.SendToClient(data)
|
if err != nil {
|
||||||
if err != nil {
|
log.Fatalf("send err:%v", err)
|
||||||
log.Fatalf("send err:%v", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("%s login ", r.Opts.Account)
|
log.Printf("account:[%s] login...", r.opts.Account)
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,15 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Robot struct {
|
type Robot struct {
|
||||||
ws *websocket.Conn
|
ws *websocket.Conn
|
||||||
Opts *Options
|
opts *Options
|
||||||
|
user *pb.Cache_UserData
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRobot(opts *Options) *Robot {
|
func NewRobot(opts *Options) *Robot {
|
||||||
@ -26,7 +27,7 @@ func NewRobot(opts *Options) *Robot {
|
|||||||
}
|
}
|
||||||
r := &Robot{
|
r := &Robot{
|
||||||
ws: ws,
|
ws: ws,
|
||||||
Opts: opts,
|
opts: opts,
|
||||||
}
|
}
|
||||||
|
|
||||||
return r
|
return r
|
||||||
@ -34,9 +35,9 @@ func NewRobot(opts *Options) *Robot {
|
|||||||
|
|
||||||
func (r *Robot) Run() {
|
func (r *Robot) Run() {
|
||||||
log.Print("Robot running...")
|
log.Print("Robot running...")
|
||||||
log.Printf("websocket %s \n", r.Opts.WsUrl)
|
log.Printf("websocket %s \n", r.opts.WsUrl)
|
||||||
|
|
||||||
if r.Opts.Create { //创建新用户
|
if r.opts.Create { //创建新用户
|
||||||
r.AccountRegister()
|
r.AccountRegister()
|
||||||
} else {
|
} else {
|
||||||
r.AccountLogin()
|
r.AccountLogin()
|
||||||
@ -63,10 +64,11 @@ func (r *Robot) Run() {
|
|||||||
|
|
||||||
//模块处理
|
//模块处理
|
||||||
func (r *Robot) handleMsg(msg *pb.UserMessage) {
|
func (r *Robot) handleMsg(msg *pb.UserMessage) {
|
||||||
log.Printf("route: %s.%s", msg.MainType, msg.SubType)
|
|
||||||
switch msg.MainType {
|
switch msg.MainType {
|
||||||
case "user":
|
case "user":
|
||||||
r.handleUserMsg(msg)
|
r.handleUserMsg(msg)
|
||||||
|
case "friend":
|
||||||
|
r.handleFriendMsg(msg)
|
||||||
default:
|
default:
|
||||||
log.Fatal("module route no exist")
|
log.Fatal("module route no exist")
|
||||||
}
|
}
|
||||||
@ -76,11 +78,16 @@ func (r *Robot) handleMsg(msg *pb.UserMessage) {
|
|||||||
func (r *Robot) onUserLoaded() {
|
func (r *Robot) onUserLoaded() {
|
||||||
//user
|
//user
|
||||||
r.CreateUser("user671")
|
r.CreateUser("user671")
|
||||||
|
//friend
|
||||||
|
r.FriendAdd()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Robot) SendToClient(data []byte) error {
|
func (r *Robot) SendToClient(msg *pb.UserMessage, rsp proto.Message) error {
|
||||||
return r.ws.WriteMessage(websocket.BinaryMessage, data)
|
if comm.ProtoEncode(rsp, msg) {
|
||||||
|
data, _ := proto.Marshal(msg)
|
||||||
|
return r.ws.WriteMessage(websocket.BinaryMessage, data)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//注册账号
|
//注册账号
|
||||||
@ -88,7 +95,7 @@ func (r *Robot) AccountRegister() {
|
|||||||
//http
|
//http
|
||||||
regReq := &pb.UserRegisterReq{}
|
regReq := &pb.UserRegisterReq{}
|
||||||
jsonByte, _ := json.Marshal(regReq)
|
jsonByte, _ := json.Marshal(regReq)
|
||||||
req, err := http.NewRequest("POST", r.Opts.RegUrl, bytes.NewReader(jsonByte))
|
req, err := http.NewRequest("POST", r.opts.RegUrl, bytes.NewReader(jsonByte))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("account register err %v", err)
|
log.Fatalf("account register err %v", err)
|
||||||
}
|
}
|
||||||
@ -115,12 +122,18 @@ func (r *Robot) AccountRegister() {
|
|||||||
MainType: "user",
|
MainType: "user",
|
||||||
SubType: "login",
|
SubType: "login",
|
||||||
}
|
}
|
||||||
if comm.ProtoEncode(loginReg, head) {
|
err = r.SendToClient(head, loginReg)
|
||||||
err = r.SendToClient(head.Data)
|
if err != nil {
|
||||||
if err != nil {
|
log.Fatal(err)
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func printReply(msg *pb.UserMessage, rsp interface{}) {
|
||||||
|
log.Printf("rsp [%s.%s] [%d] [%v]", msg.MainType, msg.SubType, msg.Code, rsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceFunc(module string, funcName string, uid string, funcArgs interface{}) {
|
||||||
|
log.Printf("req [%s.%s] [%s] [%v]", module, funcName, uid, funcArgs)
|
||||||
|
}
|
||||||
|
@ -4,45 +4,36 @@ import (
|
|||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (r *Robot) handleUserMsg(msg *pb.UserMessage) {
|
func (r *Robot) handleUserMsg(msg *pb.UserMessage) {
|
||||||
switch msg.SubType {
|
switch msg.SubType {
|
||||||
case "login":
|
case "login":
|
||||||
handleLogin(r, msg)
|
r.handleLogin(msg)
|
||||||
case "create":
|
case "create":
|
||||||
handleCreateUser(r, msg)
|
r.handleCreateUser(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理登录响应数据
|
//处理登录响应数据
|
||||||
func handleLogin(r *Robot, msg *pb.UserMessage) {
|
func (r *Robot) handleLogin(msg *pb.UserMessage) {
|
||||||
rsp := &pb.UserLoginResp{}
|
rsp := &pb.UserLoginResp{}
|
||||||
if !comm.ProtoDecode(msg, rsp) {
|
if !comm.ProtoDecode(msg, rsp) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Printf("登录返回: %v", rsp)
|
printReply(msg, rsp)
|
||||||
|
|
||||||
//是否有登录数据返回
|
//是否有登录数据返回
|
||||||
if rsp != nil {
|
if rsp != nil {
|
||||||
|
r.user = rsp.Data
|
||||||
r.onUserLoaded()
|
r.onUserLoaded()
|
||||||
} else {
|
} else {
|
||||||
r.AccountRegister() //请求Http接口,模拟创建新账号
|
r.AccountRegister() //请求Http接口,模拟创建新账号
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleCreateUser(r *Robot, msg *pb.UserMessage) {
|
//创角
|
||||||
rsp := &pb.UserCreateRsp{}
|
|
||||||
if !comm.ProtoDecode(msg, rsp) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Printf("创角返回: %v", rsp)
|
|
||||||
}
|
|
||||||
|
|
||||||
//创角色
|
|
||||||
func (r *Robot) CreateUser(NickName string) {
|
func (r *Robot) CreateUser(NickName string) {
|
||||||
req := &pb.UserCreateReq{
|
req := &pb.UserCreateReq{
|
||||||
NickName: NickName,
|
NickName: NickName,
|
||||||
@ -53,12 +44,17 @@ func (r *Robot) CreateUser(NickName string) {
|
|||||||
SubType: "create",
|
SubType: "create",
|
||||||
}
|
}
|
||||||
|
|
||||||
if comm.ProtoEncode(req, head) {
|
defer traceFunc(head.MainType, head.SubType, r.user.UserData.GetUserId(), req)
|
||||||
data, _ := proto.Marshal(head)
|
err := r.SendToClient(head, req)
|
||||||
err := r.SendToClient(data)
|
if err != nil {
|
||||||
if err != nil {
|
log.Fatal(err)
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Robot) handleCreateUser(msg *pb.UserMessage) {
|
||||||
|
rsp := &pb.UserCreateRsp{}
|
||||||
|
if !comm.ProtoDecode(msg, rsp) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
printReply(msg, rsp)
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package friend
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/lego/sys/log"
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
)
|
)
|
||||||
@ -18,6 +19,7 @@ func (this *FriendComp) Search(ctx context.Context, session comm.IUserSession, r
|
|||||||
|
|
||||||
//添加好友
|
//添加好友
|
||||||
func (this *FriendComp) Add(ctx context.Context, session comm.IUserSession, req *pb.FriendAddReq) error {
|
func (this *FriendComp) Add(ctx context.Context, session comm.IUserSession, req *pb.FriendAddReq) error {
|
||||||
|
log.Debug("add")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user