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