iOS:XMPP重新连接旧学校SSL连接

时间:2012-07-09 02:43:34

标签: ios ssl xmppframework reconnect

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服务器是openfirePLAIN身份验证机制。

1 个答案:

答案 0 :(得分:2)

我认为XMPPFramework的重新连接扩展不知道旧学校的ssl连接。恕我直言,你将不得不修改'XMPPReconnect.m'函数'maybeAttemptReconnectWithReachabilityFlags:'做类似的事情:

if(self.usesLegacyConnect) 
   [xmppStream oldSchoolSecureConnect:nil];
} else {
   [xmppStream connect:nil];
}