3

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

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

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

4

2 回答 2

1

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

于 2014-03-31T12:19:19.293 回答
0

下面是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));
    }
}
于 2013-06-02T02:04:23.887 回答