XMPPFramework
为“意外断开连接”提供名为XMPPReconnect
的扩展程序,并自动重新连接该流。
这适用于正常连接的设置:
[xmppStream connect:&error]
[xmppStream setHostPort:5222];
allowSelfSignedCertificates = NO;
allowSSLHostNameMismatch = NO;
但不适用于此Old School SSL连接:
[xmppStream oldSchoolSecureConnect:&error]
[xmppStream setHostPort:5223];
allowSelfSignedCertificates = YES;
allowSSLHostNameMismatch = YES;
错误代码libxmlErrorDomain
错误代码4
的错误Document is empty
被连续抛出,
有时,错误代码GCDAsyncSocketErrorDomain
错误代码4
也会被抛出错误代码Read operation timed out
。
请建议我使用XMPPReconnect
处理Old School SSL连接的方法。
P.S。 XMPP服务器是openfire
和PLAIN
身份验证机制。
答案 0 :(得分:2)
我认为XMPPFramework的重新连接扩展不知道旧学校的ssl连接。恕我直言,你将不得不修改'XMPPReconnect.m'函数'maybeAttemptReconnectWithReachabilityFlags:'做类似的事情:
if(self.usesLegacyConnect)
[xmppStream oldSchoolSecureConnect:nil];
} else {
[xmppStream connect:nil];
}