// Handle ACKs for the different protocol levels. func HandleAck(c *stompngo.Connection, h stompngo.Headers, id string) { ah := stompngo.Headers{} // switch c.Protocol() { case stompngo.SPL_12: ah = ah.Add("id", h.Value("ack")) case stompngo.SPL_11: ah = ah.Add("message-id", h.Value("message-id")).Add("subscription", id) case stompngo.SPL_10: ah = ah.Add("message-id", h.Value("message-id")) default: llu.Fatalf("v1:%v v2:%v\n", "ack invalid protocol level, should not happen") } if cv, ok := h.Contains(stompngo.HK_RECEIPT); ok { ah = ah.Add(stompngo.HK_RECEIPT, cv) } e := c.Ack(ah) if e != nil { llu.Fatalf("v1:%v v2:%v v3:%v\n", "ack failed", e, c.Protocol()) } return }