Datei-übertragung per XMPP (Erweiterung XEP-0065)
Nicht sicher, warum bin ich immer der turn-socket ist fehlgeschlagen (turnSocketDidFail genannt). Kann jemand mir helfen herauszufinden, dieses? Bitte zeigen Sie mir, was mache ich hier falsch. Ich weiß, es gibt viele Fragen wie diese, und ich habe bereits überprüft, alle diese-und ich habe wenig schon helfen. Ein client ist Spark und anderen simulator.
Einstellungen:
Server: testXyz
Senderjid: user1@testXyz
Receiverjid: user2@testXyz
XMPPJID *jid = [XMPPJID jidWithString:Receiverjid];
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Receiverjid, nil]];
TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:self.chatManager.xmppStream toJID:jid];
[turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
Konsole anmeldet
SEND:
<iq type="get" to="Receiverjid" id="C15C428D-6007-4B4E-96D5-65F7A307121A"><query xmlns="http://jabber.org/protocol/disco#items"/></iq>
RECV:
<iq xmlns="jabber:client" type="result" id="C15C428D-6007-4B4E-96D5-65F7A307121A" from="Receiverjid" to="Senderjid/4840c8ae">
<query xmlns="http://jabber.org/protocol/disco#items">
<item jid="Receiverjid" node="http://jabber.org/protocol/tune"/>
<item jid="Receiverjid/Spark 2.6.3"/>
</query>
</iq>
SEND:
<iq type="get" to="Receiverjid" id="A4D8B427-B323-4152-8B19-7B55164E9C4B">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
RECV:
<iq xmlns="jabber:client" type="result" id="A4D8B427-B323-4152-8B19-7B55164E9C4B" from="Receiverjid" to="Senderjid/4840c8ae">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="account" type="registered"/>
<identity category="pubsub" type="pep"/>
<feature var="http://jabber.org/protocol/disco#info"/>
</query>
</iq>
SEND:
<iq type="get" to="Receiverjid/Spark 2.6.3" id="2DE55487-9203-4266-A559-1B1D3DC5FBF4">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
RECV:
<iq xmlns="jabber:client" id="2DE55487-9203-4266-A559-1B1D3DC5FBF4" to="Senderjid/4840c8ae" type="result" from="Receiverjid/Spark 2.6.3">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" name="Smack" type="pc"/>
<feature var="http://www.xmpp.org/extensions/xep-0166.html#ns"/>
<feature var="urn:xmpp:tmp:jingle"/>
</query>
</iq>
RECV:
<iq xmlns="jabber:client" id="2DE55487-9203-4266-A559-1B1D3DC5FBF4" to="Senderjid/4840c8ae" type="result" from="Receiverjid/Spark 2.6.3">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" name="Smack" type="pc"/>
<feature var="http://jabber.org/protocol/xhtml-im"/>
<feature var="http://jabber.org/protocol/muc"/>
<feature var="http://jabber.org/protocol/bytestreams"/>
<feature var="http://jabber.org/protocol/commands"/>\
<feature var="http://jabber.org/protocol/si/profile/file-transfer"/>
<feature var="http://jabber.org/protocol/si"/>
<feature var="http://jabber.org/protocol/ibb"/>
</query>
</iq>
Update
Wenn ich mich verändert:
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Receiverjid, nil]];
zu:
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Server, nil]];
Gibt es mir:
<error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error>
.
Wie vorgeschlagen, in eine Frage auf stack um diesen Fehler zu beheben habe ich ersetzt Receiverjid: 'user2@testXyz" von "user2@testXyz/spark", aber bin noch immer derselbe Fehler.
- Ich bin mit XEP-0065.
- Wie pro meine Kenntnisse XEP-0065 allein nicht in der Lage, den transfer-Datei, die Sie verwenden müssen, XEP-0096 sowie um die session-ID. Zur übertragung der Datei session-ID ist der wichtigste Teil. Stellen Sie sicher, dass die session-id bleibt die gleiche für file transfer session.
Du musst angemeldet sein, um einen Kommentar abzugeben.
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Receiverjid, nil]]; In diesem ersetzen "Receiverjid" mit hostname, eg:sa.com,
iducool ,finden Sie die vollständige jid mit Ressourcen in der folgenden Methode der AppDelegate.
Weiß nicht, was zu setzen in setProxyCandidates, aber ich bin meine Einstellung Server name.
<error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error>
Lösung: Pass vollständige jabber-id:username@domain/resource.
In meinem Fall habe ich geändert " user2@testXyz/Funke; zu 'user2@testXyz/Spark 2.6.3'
Ich weiß nicht, wie zu finden, diese Ressourcen-Parameter. Ich habe XMPPJID Klasse resource-parameter, aber es ist null. Ich fand diese Parameter durch das sehen einige Konsole protokolliert. Wenn das jemand wissen, wie man dies von jedem xmpp-Klasse dann lasst es mich bitte wissen.