美食馆

This commit is contained in:
meixiongfeng 2022-12-05 19:31:26 +08:00
parent f302428e60
commit 7b5255cf6e
2 changed files with 113 additions and 19 deletions

View File

@ -2,16 +2,15 @@ package robot
import ( import (
"bytes" "bytes"
"crypto/rand"
"encoding/json" "encoding/json"
"fmt" "fmt"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb"
"io" "io"
"math/big" "math/rand"
"os" "os"
"strconv" "strconv"
"time"
"go_dreamfactory/pb"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
@ -203,6 +202,13 @@ func (r *Robot) MessageRsp(mainType, subType string) (bool, int64) {
return false, byteLen return false, byteLen
} }
//fmt.Printf("接收消息=====loginData:%v,userExpand:%v\n", resp.Data, resp.Ex) //fmt.Printf("接收消息=====loginData:%v,userExpand:%v\n", resp.Data, resp.Ex)
return true, byteLen
} else if msg.MainType == "goutmet" && msg.SubType == "getranduser" {
resp := &pb.GourmetGetRandUserResp{}
if !comm.ProtoUnmarshal(msg, resp) {
return false, byteLen
}
return true, byteLen return true, byteLen
} }
return false, byteLen return false, byteLen
@ -235,13 +241,38 @@ func (r *Robot) Login() error {
return nil return nil
} }
func (r Robot) GetRandUser() bool {
mainType := "goutmet"
subType := "getlist"
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
rsp := &pb.GourmetGetRandUserReq{
People: 3,
}
msg.Sec = r.BuildSecStr()
if comm.ProtoMarshal(rsp, msg) {
data, _ := proto.Marshal(msg)
err := r.ws.WriteMessage(websocket.BinaryMessage, data)
if err != nil {
fmt.Printf("WriteMessage err:%v", err)
}
}
for i := 0; i < 100; i++ {
if b, _ := r.MessageRsp(mainType, subType); b {
return true
}
}
return true
}
func (r *Robot) Create() bool { func (r *Robot) Create() bool {
mainType := "user" mainType := "user"
subType := "create" subType := "create"
msg := &pb.UserMessage{MainType: mainType, SubType: subType} msg := &pb.UserMessage{MainType: mainType, SubType: subType}
n2, _ := rand.Int(rand.Reader, big.NewInt(1000000)) rand.Seed(time.Now().UnixNano())
n2 := rand.Int63n(9000000)
name := strconv.Itoa(int(n2.Int64() + 100000)) name := strconv.Itoa(int(n2) + 100000)
rsp := &pb.UserCreateReq{ rsp := &pb.UserCreateReq{
NickName: name, NickName: name,
Figure: 100, Figure: 100,
@ -256,10 +287,70 @@ func (r *Robot) Create() bool {
} }
} }
for { for i := 0; i < 100; i++ { // 防止丢包
if b, _ := r.MessageRsp(mainType, subType); b { if b, _ := r.MessageRsp(mainType, subType); b {
return true return true
} }
} }
return false
}
// 获取美食家信息列表数据
func (r Robot) GetGourmetList() int64 {
var byteLen int64
mainType := "goutmet"
subType := "getranduser"
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
rsp := &pb.GourmetGetRandUserReq{
People: 3,
}
msg.Sec = r.BuildSecStr()
if comm.ProtoMarshal(rsp, msg) {
data, _ := proto.Marshal(msg)
err := r.ws.WriteMessage(websocket.BinaryMessage, data)
if err != nil {
fmt.Printf("WriteMessage err:%v", err)
}
}
for i := 0; i < 100; i++ {
var msg *pb.UserMessage = &pb.UserMessage{}
_, data, err := r.ws.ReadMessage()
if err != nil {
fmt.Printf("readMessage err:%v", err)
continue
}
byteLen += int64(len(data))
if err = proto.Unmarshal(data, msg); err != nil {
fmt.Printf("unmarshal err:%v", err)
}
if msg.MainType == "goutmet" && msg.SubType == "getlist" {
resp := &pb.GourmetGetListResp{}
if !comm.ProtoUnmarshal(msg, resp) { //反序列化失败
break
}
break
}
}
return byteLen
}
// addItem
func (r Robot) AddGrormetItem() {
mainType := "gm"
subType := "cmd"
msg := &pb.UserMessage{MainType: mainType, SubType: subType}
rsp := &pb.GMCmdReq{
Cmod: "bingo:item,50001,100",
}
msg.Sec = r.BuildSecStr()
if comm.ProtoMarshal(rsp, msg) {
data, _ := proto.Marshal(msg)
err := r.ws.WriteMessage(websocket.BinaryMessage, data)
if err != nil {
fmt.Printf("WriteMessage err:%v", err)
}
}
} }

View File

@ -71,7 +71,6 @@ end:
func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, request *model.Request, func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, request *model.Request,
r *robot.Robot) { r *robot.Robot) {
var ( var (
startTime = time.Now()
isSucceed = false isSucceed = false
errCode = model.HTTPOk errCode = model.HTTPOk
byteLen int64 // 协议传输字节数 byteLen int64 // 协议传输字节数
@ -80,16 +79,20 @@ func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64,
head := &pb.UserMessage{MainType: "user", SubType: "login"} head := &pb.UserMessage{MainType: "user", SubType: "login"}
r.SendToClient(head, &pb.UserLoginReq{}) r.SendToClient(head, &pb.UserLoginReq{})
for { // 美食馆增加道具
r.AddGrormetItem()
if b, len := r.MessageRsp("user", "login"); b { // for {
byteLen += len // if b, len := r.MessageRsp("user", "login"); b {
isSucceed = true // byteLen += len
//errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.pb", r.GetMessagedata()) // isSucceed = true
break // //errCode, isSucceed = request.GetVerifyWebSocket()(request, "webSocket.pb", r.GetMessagedata())
} // break
} // }
r.Create() // }
// r.Create()
startTime := time.Now()
// r.GetRandUser() // 获取随机在线玩家数据
byteLen = r.GetGourmetList()
requestTime := uint64(helper.DiffNano(startTime)) requestTime := uint64(helper.DiffNano(startTime))
requestResults := &model.RequestResults{ requestResults := &model.RequestResults{
ID: "", ID: "",