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