package xmpp import ( "fmt" "time" ) func (c *Client) PingC2S(jid, server string) error { if jid == "" { jid = c.jid } if server == "" { server = c.domain } _, err := fmt.Fprintf(c.stanzaWriter, ""+ ""+ "\n", xmlEscape(jid), xmlEscape(server), getUUID()) return err } func (c *Client) PingS2S(fromServer, toServer string) error { _, err := fmt.Fprintf(c.stanzaWriter, ""+ ""+ "\n", xmlEscape(fromServer), xmlEscape(toServer), getUUID()) return err } func (c *Client) SendResultPing(id, toServer string) error { _, err := fmt.Fprintf(c.stanzaWriter, "\n", xmlEscape(toServer), xmlEscape(id)) return err } func (c *Client) sendPeriodicPings() { for range c.periodicPingTicker.C { // Reset ticker for periodic pings if configured. if c.periodicPings { c.periodicPingTicker.Reset(c.periodicPingPeriod) } c.periodicPingID = getUUID() c.periodicPingReply = false _, err := fmt.Fprintf(c.stanzaWriter, ""+ "\n", xmlEscape(c.jid), xmlEscape(c.domain), c.periodicPingID) if err != nil { c.Close() } time.Sleep(c.periodicPingTimeout) if !c.periodicPingReply { c.shutdown = true fmt.Fprintf(c.stanzaWriter, "\n") c.conn.Close() } } }