XMPPFramework - сохранить службу с кодом 503 службы недоступна - PullRequest
3 голосов
/ 23 января 2012

Я использую сервер 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-аутентификацию при подключении к серверу. Может ли это быть причиной или это что-то еще, что мне не хватает?

Спасибо.

1 Ответ

1 голос
/ 16 февраля 2015

в XMPP - делегат присутствия

использование: [self from] full], заполнит JID ресурсом.

1) [self from] user], дает только имя пользователя @ домен 2) [self from] full], дает полный JID, как показано ниже:

JID: имя пользователя @ domain / resourceid

надеюсь, приведенная выше информация поможет

...