@Override
    public void route(Element wrappedElement) throws UnknownStanzaException {

        if (StreamManager.NAMESPACE_V3.equals(wrappedElement.getNamespace().getStringValue())) {
            session.getStreamManager().process(wrappedElement);
        } else if (CsiManager.isStreamManagementNonza(wrappedElement)) {
            session.getCsiManager().process(wrappedElement);
        } else {
            super.route(wrappedElement);
            if (isUnsolicitedAckExpected()) {
                session.getStreamManager().sendServerAcknowledgement();
            }
        }
    }
This class extends Openfire's session packet router with the ACK capabilities
specified by XEP-0198: Stream Management.

NOTE: This class does NOT support the XEP-0198 stream resumption capabilities.

XEP-0198 allows either party (client or server) to send unsolicited ack/answer
stanzas on a periodic basis. This implementation approximates BOSH ack behavior
by sending unsolicited &lt;a /&gt; stanzas from the server to the client after a
configurable number of stanzas have been received from the client. 

Setting the system property to "1" would indicate that each client packet should 
be ack'd by the server when stream management is enabled for a particular stream. 
To disable unsolicited server acks, use the default value for system property
"stream.management.unsolicitedAckFrequency" ("0"). This setting does not affect
server responses to explicit ack requests from the client.
xmppserver/src/main/java/org/jivesoftware/openfire/websocket/StreamManagementPacketRouter.java