Esempio n. 1
0
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)
			}
		}
	}()
}