Я использую сервер Openfire (3.7.1) для аутентификации XMPP, обмена сообщениями и передачи файлов. Я использую XMPPFramework для iOS, чтобы общаться с ним.
Я успешно установил аутентификацию, отправляю и получаю информацию о присутствии, отправляю и получаю сообщения. Однако, когда я попытался использовать передачу файлов, я не смог выполнить.
Пожалуйста, посмотрите на мой код ниже.
Для отправителя:
NSArray *proxyList = [NSArray arrayWithObjects:self.hostname,nil];
[TURNSocket setProxyCandidates:proxyList];
TURNSocket *fileTransferSocket = [[TURNSocket alloc] initWithStream:self.xmppStream toJID:userJid];
if (fileTransferSocket) {
[fileTransferSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
}
Для получателя:
- (BOOL)xmppStream:(XMPPStream*)sender didReceiveIQ:(XMPPIQ *)iq {
if ([TURNSocket isNewStartTURNRequest:iq]) {
TURNSocket *receiverSock = [[TURNSocket alloc] initWithStream:self.xmppStream incomingTURNRequest:iq];
[self.turnSockets addObject:receiverSock];
[receiverSock startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
}
return YES;
}
Также реализованы методы делегата TURNSocket:
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"Socket Suceeed Port For File Transfer: %d",socket.localPort);
if ([self.turnSockets containsObject:sender]) {
NSLog(@"File Transfer Ulastiiiiiiii");
NSUInteger indexOfObj = [self.turnSockets indexOfObject:sender];
[self.turnSockets removeObjectAtIndex:indexOfObj];
}
}
Но когда я пытаюсь запустить процесс передачи файлов, я получаю сообщение об ошибке, подобное этому:
<query xmlns="http://jabber.org/protocol/bytestreams" sid="99DC0DA7-55ED-4A53-9A8F-F65F1706E1B2" mode="tcp">
<streamhost jid="proxy.192.168.12.30" host="192.168.12.30" port="7777"/>
</query>
<error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
Я не понимаю, в чем может быть проблема.
Единственное, что мне пришло в голову, это то, что я не использую SSL-аутентификацию при подключении к серверу. Может ли это быть причиной или это что-то еще, что мне не хватает?
Спасибо.