gpt4 book ai didi

android - 如何检查客户端是否连接到 XMPP 服务器

转载 作者:太空狗 更新时间:2023-10-29 15:49:01 25 4
gpt4 key购买 nike

我正在为 Android 和 iPhone 使用 XMPP 客户端。我已经能够连接到服务器并接收消息了。

但客户端在几分钟后与 XMPP 服务器断开连接。 IOS XMPP Framework 包含一个指示客户端是否连接到服务器的委托(delegate)方法。如果连接没有断开,那么我们可以使用委托(delegate)方法重新连接。我在 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);
}

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");

关于android - 如何检查客户端是否连接到 XMPP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com