嗨,我是openfire的新手。
我在openfire服务器中启用了离线消息选项。
用户A在线,用户B在线,在这种情况下,我能够收到消息。
现在,用户B关闭其WiFi(注意:用户A等到用户B会话在服务器中被完全杀死),现在用户A向用户B发送了一条消息。现在,用户B再次联机,服务器正在向该用户发送该消息B在 10分钟。
我的代码
private class MyLoginTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
realm = Realm.getDefaultInstance();
dataUsers = realm.where(EntityUsers.class).findFirst();
if (dataUsers != null) {
userName2 = dataUsers.getUsername();
password = dataUsers.getPass();
}
new Thread() {
@Override
public void run() {
InetAddress addr = null;
try {
addr = InetAddress.getByName(domainAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
HostnameVerifier verifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return false;
}
};
DomainBareJid serviceName = null;
try {
serviceName = JidCreate.domainBareFrom(domainAddress);
} catch (XmppStringprepException e) {
e.printStackTrace();
}
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(userName2, password)//userName2,"spinku12345"
.setPort(5222)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setXmppDomain(serviceName)
.setHostnameVerifier(verifier)
.setHostAddress(addr)
.setDebuggerEnabled(true)
.setSendPresence(true)
.build();
mConnection = new XMPPTCPConnection(config);
try {
mConnection.connect();
if(mConnection.isConnected()) {
Log.w("app", "conn done");
}
mConnection.login();
if (mConnection.isAuthenticated() && mConnection.isConnected()) {
Log.e(TAG, "run: auth done and connected successfully");
ChatManager chatManager = ChatManager.getInstanceFor(mConnection);
chatManager.addListener(new IncomingChatMessageListener() {
@Override
public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {
Log.e(TAG, "New message from " + from + ": " + message.getBody());
final MessagesData data = new MessagesData("(" + getTime() + ")" + userName1, message.getBody().toString(), 0);//received
mMessagesData.add(data);
vibrator.vibrate(500);
mRingtone.play();
//now update recyler view
runOnUiThread(new Runnable() {
@Override
public void run() {
//this ui thread important otherwise error occur
mAdapter = new Adapter(mMessagesData);
mRecyclerView.setAdapter(mAdapter);\
}
});
}
});
}
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
return "";
}
如何设置服务器以实时发送脱机消息。