iOS: переподключение XMPP через SSL-соединение Old School
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
работать на SSL-соединении Old School.
PS XMPP сервер есть openfire
и PLAIN
механизм аутентификации.
1 ответ
Я не думаю, что расширение переподключения XMPPFramework знает о ssl-соединении старой школы. ИМХО, вам нужно будет изменить функцию 'XMPPReconnect.m', может быть "AttemptReconnectWithReachabilityFlags: ", чтобы сделать что-то вроде:
if(self.usesLegacyConnect)
[xmppStream oldSchoolSecureConnect:nil];
} else {
[xmppStream connect:nil];
}