印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.6 KiB

1 year ago
package task
import (
"fmt"
"server/modules/web/values"
"server/pb"
"server/util"
"time"
"github.com/liangdas/armyant/task"
"github.com/liangdas/mqant/log"
)
func NewWork(manager *Manager) *Work {
this := new(Work)
// this.manager = manager
this.Number = manager.Number
this.WebAddr = manager.Addr
this.GameKind = manager.GameKind
manager.Number++
return this
}
func (this *Work) Init(t task.Task) {
this.WsWork = new(WsWork)
this.WsWork.register = map[int]map[int]func(msg []byte){}
this.WsWork.Work = this
this.RegistFunc(int(pb.ServerType_SERVER_TYPE_GATEWAY), int(pb.ServerGateResp_GateLoginResp), this.LoginResp)
this.RegistFunc(int(pb.ServerType_SERVER_TYPE_COMMON), int(pb.ServerCommonResp_CommonPlayerBalanceResp), this.BroadcastResp)
}
/*
*
Work 代表一个协程内具体执行任务工作者
*/
type Work struct {
*WsWork
WebAddr string
Number int
UID int
Nick string
Token string
GameKind int
}
func (this *Work) RunWorker(t task.Task) {
fmt.Printf("robot %v start\n", this.Number)
req := &values.GuestLoginReq{}
ret := struct {
Code int
Msg string
Data values.LoginResp
}{}
this.Wait()
for {
err := util.HttpPost(this.WebAddr+"/account/guestLogin", req, &ret, map[string]string{"uuid": fmt.Sprintf("press_robot_%v", this.Number), "channel": "1"})
if err == nil {
break
}
log.Error("err:%v", err)
time.Sleep(5 * time.Second)
}
this.addr = ret.Data.GateAddr
this.Token = ret.Data.Token
this.UID = ret.Data.UID
// this.Wait()
this.Connect()
}
func (this *Work) Close(t task.Task) {
this.conn.Close()
}