asmack小问题集锦

1.连接超时:

除了网络故障(有些公司的服务器拦截外部ip访问的),还可能是你的openfire服务器默认了安全链接,把你的请求过滤了。

asmack小问题集锦_第1张图片


2.:Not connected to server

public static void disConnection() {
        if (null != con) {
            con.disconnect();
            con = null;
        }
    }

会释放连接的资源,登录状态改为离线。

然后更改接受离线消息,把它注释掉,这样就可以了。

	/**
	 * 离线消息
	 */
	private void getOffLine() {
		// new Thread() {
		// public void run() {
		// List<org.jivesoftware.smack.packet.Message> msglist = ConnecMethod
		// .getOffLine();
		// for (org.jivesoftware.smack.packet.Message msg : msglist) {
		// // 将离线消息保存到数据库
		// // ConnecMethod.saveTalkMsgSQL(msg.getFrom(), msg.getTo(),
		// // msg.getBody());
		// }
		// };
		// }.start();
	}


3.用手机端和pc端spark发送的资源名是不同的:

手机端: 服务器 +"Smack"

spark:服务器+”spark“+版本号

填写错误的话,也许就不能收到消息了。


4.接受在线消息的监听:

ChatManager cm = XmppTool.getConnection().getChatManager();
		cm.addChatListener(new ChatManagerListener() {
			@Override
			public void chatCreated(Chat chat, boolean able) {
				chat.addMessageListener(new MessageListener() {
					@Override
					public void processMessage(Chat chat2, Message message) {
						// example: ssssadmin@coboqo/Spark 2.6.3
						// 同时会拦截离线的消息
						Log.d("connectMethod:getOnLine()", message.getBody()
								+ message.getFrom() + message.getTo());
						saveTalkMsgSQL(message.getFrom(), message.getTo(),
								message.getBody());
						sendBroadcastMsg(context, message.getFrom());
					}
				});
			}
		});

其实,也可以收到离线消息,如果你在接受离线消息处理的时候,发现你收到了两次同样的消息,那么应该就是这个问题了。

5.如果在模拟器和真机之间测试传输文件没有问题,而在真机之间传输文件出现问题,先查看下你的真机是否都是连接的同一个wifi。如果是的话,你尝试下载不同的wifi下,真机之间传输文件吧。

你可能感兴趣的:(openfire)