Rah*_*rma 2 android xmpp smack
我正在为Android和iPhone工作一个XMPP客户端.我已经能够连接到服务器并获取消息.
但客户端在几分钟后与XMPP服务器断开连接.IOS XMPP框架由委托方法组成,该方法指示客户端是否连接到服务器.如果连接未断开,那么我们可以使用委托方法重新连接.我在Android客户端(我正在使用aSmack库)中使用以下代码来检查是否存在连接.但这似乎不起作用.
public void recieveMessage()
{
Log.e("xmppclient","will receive messages");
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
if(connection != null && connection.isConnected())
{
Message message = (Message) packet;
if (message.getBody() != null)
{
fromName = StringUtils.parseBareAddress(message.getFrom());
String messageBody=message.getBody();
Log.e("Message", messageBody );
Intent i = new Intent(NEW_MESSAGE);
i.putExtra("username", StringUtils.parseBareAddress(message.getFrom()));
i.putExtra("message", message.getBody());
sendBroadcast(i);
}
else
{
connectToXmpp();
}
}
}
}
,filter);
}
Run Code Online (Sandbox Code Playgroud)
connectToXMPP()是打开新连接的方法.
一旦连接消失,有没有其他方法来检查连接并重新连接到XMPP ...... ???
如上所述,您需要附加连接侦听器,如下所示:
Connection connection = (Connection)params[0];
connection.connect();
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
System.out.println("Received message");
}
}, new PacketFilter() {
@Override
public boolean accept(Packet packet) {
System.out.println("Received message");
return true;
}
});
connection.addConnectionListener(new ConnectionListener() {
@Override
public void connectionClosed() {
System.out.println("uhoh");
}
@Override
public void connectionClosedOnError(Exception e) {
System.out.println("uhoh");
}
@Override
public void reconnectingIn(int i) {
if(i < 4){
//TODO notify
}
}
@Override
public void reconnectionSuccessful() {
System.out.println("uhoh");
}
@Override
public void reconnectionFailed(Exception e) {
System.out.println("uhoh");
}
});
connection.login("test2", "test");
Run Code Online (Sandbox Code Playgroud)