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.
74 lines
1.6 KiB
74 lines
1.6 KiB
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() |
|
}
|
|
|