【问题标题】:How to intercept a Ping message from the Openfire Server?如何拦截来自 Openfire 服务器的 Ping 消息?
【发布时间】:2013-01-05 02:49:56
【问题描述】:

我正在编写一个 Openfire 插件来拦截客户端空闲时服务器发送给客户端的 Ping 消息。系统 Ping 的样子:

<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='s2c1' type='get'>
  <ping xmlns='urn:xmpp:ping'/>
</iq>

但是,当我使用 PacketInterceptor 拦截服务器和客户端之间的所有数据包时,拦截器能够拦截除 Ping 之外的所有数据包。我不明白发生了什么事。任何帮助将非常感激!

【问题讨论】:

  • 你能捕捉到存在数据包吗?

标签: java plugins xmpp openfire


【解决方案1】:

在这里您可以找到一个最简单的数据包拦截器示例,它记录每个传入和传出的数据包。 http://faisalbhagat.blogspot.com/2014/03/openfire-logging-using-packetinterceptor.html

【讨论】:

    【解决方案2】:

    下面是我的插件中的覆盖方法intercepPacket,它可以拦截ping消息。 供大家参考~:)

    @Override
    public void interceptPacket(org.xmpp.packet.Packet packet, Session session,
            boolean incoming, boolean processed) throws PacketRejectedException {
        if (incoming && !processed) {
            String packetXml = packet.toXML();
            logger.warn("\n" + new XmlFormatter().format(packetXml));
        }
    }
    

    【讨论】:

    • 我了解到您在if语句中使用了incoming,因为您想处理从客户端到服务器的传入消息,但是使用!处理的含义是什么? @BrownyLin
    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 2019-11-24
    • 1970-01-01
    • 2015-06-08
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多