Smack - 消息是否已发送?

时间:2014-10-21 05:54:22

标签: java networking xmpp smack

我使用Smack 3.2.1 如何检查,是否发送了消息,还是出现了网络故障等问题? 我这样做:

connection.connect();
connection.addConnectionListener(this);
connection.login(auth.getUsername(), auth.getPassword());
// ... initializing e ...
Chat chat = connection.getChatManager().createChat(e.getAddress(), null);
try{
    /********at this moment network failures*******/
    chat.sendMessage(e.getMessage());
    log.info("Message was sent: " + e);
} catch (XMPPException ex){
    log.error("Error: " + e + ", ex=" + ex);
}

每次记录该消息都被发送,但实际上并非如此。 还有ConnectionListener方法,但它们不起作用,程序只是不调用它们。

    @Override
    public void connectionClosed() {
        log.info("connectionClosed()");
    }

    @Override
    public void connectionClosedOnError(Exception excptn) {
        log.info("connectionClosedOnError()");
    }

    @Override
    public void reconnectingIn(int i) {
        log.info("reconnectingIn()");
    }

    @Override
    public void reconnectionSuccessful() {
        log.info("reconnectionSuccessful");
    }

    @Override
    public void reconnectionFailed(Exception excptn) {
        log.info("reconnectionFailed()");
    }

如何控制网络问题?如果重要的话,我会使用Linux。

UPD: 我意识到消息会进入某个队列,当连接变得固定时,会发送消息。我有了一个想法 - 在记录之前检查这个队列,但我不知道,如何访问它。

0 个答案:

没有答案