Привет, я новичок на открытом огне.
На сервере openfire включена опция автономных сообщений.
Пользователь А онлайн, Пользователь Б онлайн, в этом случае я могу получать сообщения.
Теперь пользователь 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 "";
}
Как настроить сервер для отправки автономных сообщений в режиме реального времени.