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() }