func (this *Conn) Start() { macAddr, _ := GetMac() b := []byte(macAddr) this.SendMessage(comet.MSG_REGISTER, 0, b, nil) go func() { timer := time.NewTicker(110 * time.Second) h := comet.Header{} h.Type = comet.MSG_HEARTBEAT heartbeat, _ := h.Serialize() for { select { case <-this.done: return case pack := <-this.outMsgs: //seqid := pack.client.nextSeq //pack.msg.Header.Seq = seqid b, _ := pack.msg.Header.Serialize() this.conn.Write(b) this.conn.Write(pack.msg.Data) log.Infof("send msg: (%d) (%s)", pack.msg.Header.Type, pack.msg.Data) //pack.client.nextSeq += 1 time.Sleep(1 * time.Second) case <-timer.C: this.conn.Write(heartbeat) } } }() }