diff --git a/packet/heartbeat.go b/packet/heartbeat.go index af735cb..c2cd89d 100644 --- a/packet/heartbeat.go +++ b/packet/heartbeat.go @@ -2,6 +2,6 @@ package packet // NewHeartBeatPacket 构造心跳包 func NewHeartBeatPacket() []byte { - pkt := NewPacket(Plain, HeartBeat, nil) + pkt := NewPacket(1, HeartBeat, nil) return pkt.Build() } diff --git a/packet/packet.go b/packet/packet.go index 7920a9e..5791e00 100644 --- a/packet/packet.go +++ b/packet/packet.go @@ -18,8 +18,8 @@ const ( ) const ( - _ = iota - _ + HandShake = iota + HandShakeResponse HeartBeat HeartBeatResponse _ @@ -94,10 +94,21 @@ func (p *Packet) Unmarshal(v interface{}) error { } func (p *Packet) Build() []byte { + // default packet with some constants + // raw header length: buf[5] = 16 + // seq: buf[16] = 1 rawBuf := []byte{0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1} + + // protocol version binary.BigEndian.PutUint16(rawBuf[6:], p.ProtocolVersion) + + // operation code binary.BigEndian.PutUint32(rawBuf[8:], p.Operation) + + // append payload rawBuf = append(rawBuf, p.Body...) + + // payload length binary.BigEndian.PutUint32(rawBuf, uint32(len(rawBuf))) return rawBuf }