<show/>away</show> 不可用的状态类型(离开 - 资源暂时离开)未收到元素
Presence type unavailable with <show/>away</show> (away - resource is temporarily away) element not received
我已经在 ubuntu.I 上安装了 mongooseIM 2.0.0
服务器并使用了 smack 4.2.2 客户端库,后端数据库是 postgres。当我的应用程序按照存在节格式进入后台模式时,我将发送到服务器
点击代码
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus(""+new Date().getTime());
presence.setType(Presence.Type.unavailable);
presence.setMode(Presence.Mode.away);
connection.sendStanza(presence);
发送节
<presence id='aS7jX-85' type='unavailable'><status>1517400343535</status><show>away</show></presence>
在上面的节中 show
元素表示资源暂时离开,这意味着用户已连接到服务器,但其他名册显示该用户最后一次被视为离线。
以上节在 StanzaListener
上成功接收,但只有一次 time.When 用户再次请求获取名册状态类型并且 LastActivity
来自该用户它将给出状态类型始终在线。
以下 smack StanzaListener
我得到 show
个元素
StanzaTypeFilter filter = new StanzaTypeFilter(Presence.class);
mPresenceListener = new StanzaListener() {
@Override
public void processStanza(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException {
if(registerXmppListener!=null) {
registerXmppListener.onPresenceReceived(stanza);
}
}
};
connection.addSyncStanzaListener(mPresenceListener, filter);
我正在尝试从用户
获取 LastActivity
以下节格式
上次看到请求的 smack 代码。
LastActivity man = LastActivityManager.getInstanceFor(connection).getLastActivity(getEntityBarJid(user2));
结果
<iq to='sagardj@tasktower.com/13A843800EA34EF81517400323777798' from='demo2@tasktower.com' id='ncmqD-106' type='result'><query xmlns='jabber:iq:last' seconds='0'/></iq>
它总是会在 LastActivity
中给出 seconds=0 所以我将再次发送请求以获取 Roster presence type 并且我得到以下节结果。
获取 Roster
存在的 smack 代码
Presence presence = roster.getPresence(getEntityBarJid((ActivityHelper.createJid(jid))));
结果
<presence to='sagardj@tasktower.com/13A843800EA34EF81517400323777798' from='demo2@tasktower.com/4A72251C2B957F841517400310999197' id='aS7jX-29'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='lWpWNgqtfynY+MxupmhOr2LZqOg='/><delay xmlns='urn:xmpp:delay' stamp='2018-01-31T12:05:16.000+00:00' from='demo2@tasktower.com/4A72251C2B957F841517400310999197'></delay></presence>
在上面的节结果中,我没有逃脱元素。
我们需要任何服务器端配置吗?我们正在按照此 link Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence 在服务器端发送节请求。
不加presence.setType(Presence.Type.unavailable);
。这向服务器发出用户离线的信号。如果您希望他们继续在线显示,但也离开,则只需删除该行即可。
我已经在 ubuntu.I 上安装了 mongooseIM 2.0.0
服务器并使用了 smack 4.2.2 客户端库,后端数据库是 postgres。当我的应用程序按照存在节格式进入后台模式时,我将发送到服务器
点击代码
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus(""+new Date().getTime());
presence.setType(Presence.Type.unavailable);
presence.setMode(Presence.Mode.away);
connection.sendStanza(presence);
发送节
<presence id='aS7jX-85' type='unavailable'><status>1517400343535</status><show>away</show></presence>
在上面的节中 show
元素表示资源暂时离开,这意味着用户已连接到服务器,但其他名册显示该用户最后一次被视为离线。
以上节在 StanzaListener
上成功接收,但只有一次 time.When 用户再次请求获取名册状态类型并且 LastActivity
来自该用户它将给出状态类型始终在线。
以下 smack StanzaListener
我得到 show
个元素
StanzaTypeFilter filter = new StanzaTypeFilter(Presence.class);
mPresenceListener = new StanzaListener() {
@Override
public void processStanza(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException {
if(registerXmppListener!=null) {
registerXmppListener.onPresenceReceived(stanza);
}
}
};
connection.addSyncStanzaListener(mPresenceListener, filter);
我正在尝试从用户
获取LastActivity
以下节格式
上次看到请求的 smack 代码。
LastActivity man = LastActivityManager.getInstanceFor(connection).getLastActivity(getEntityBarJid(user2));
结果
<iq to='sagardj@tasktower.com/13A843800EA34EF81517400323777798' from='demo2@tasktower.com' id='ncmqD-106' type='result'><query xmlns='jabber:iq:last' seconds='0'/></iq>
它总是会在 LastActivity
中给出 seconds=0 所以我将再次发送请求以获取 Roster presence type 并且我得到以下节结果。
获取 Roster
存在的 smack 代码
Presence presence = roster.getPresence(getEntityBarJid((ActivityHelper.createJid(jid))));
结果
<presence to='sagardj@tasktower.com/13A843800EA34EF81517400323777798' from='demo2@tasktower.com/4A72251C2B957F841517400310999197' id='aS7jX-29'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='lWpWNgqtfynY+MxupmhOr2LZqOg='/><delay xmlns='urn:xmpp:delay' stamp='2018-01-31T12:05:16.000+00:00' from='demo2@tasktower.com/4A72251C2B957F841517400310999197'></delay></presence>
在上面的节结果中,我没有逃脱元素。
我们需要任何服务器端配置吗?我们正在按照此 link Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence 在服务器端发送节请求。
不加presence.setType(Presence.Type.unavailable);
。这向服务器发出用户离线的信号。如果您希望他们继续在线显示,但也离开,则只需删除该行即可。