使用XMPP进行文件传输(Extension XEP-0065) [英] File transfer using XMPP (Extension XEP-0065)

查看:179
本文介绍了使用XMPP进行文件传输(Extension XEP-0065)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

不确定我为什么转轮套接字失败(调用turnSocketDidFail)。任何人都可以帮我解决这个问题?请指出我在这里做错了什么。我知道有很多这样的问题,我已经检查了所有这些,并且从那里我已经采取了一点帮助。其中一个是Spark,另一个是模拟器。

Not sure why I am getting turn socket failed (turnSocketDidFail called). Anybody can help me in figure out this? Please point me what am I doing wrong here. I know there are lots of question like this and I have already checked all of these and from that I have taken little help already. One of client is Spark and other is simulator.

设置:

服务器:testXyz

Senderjid:user1 @ testXyz

Receiverjid:user2 @ testXyz

Settings:
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()];

控制台日志

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>

更新

如果我要改变:

[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Receiverjid,nil]];

to:

[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:Server,nil]] ;

它给了我:

<错误代码=503type =cancel>< service-unavailable xmlns =urn:ietf:params:xml:ns:xmpp-stanzas/>< / error>

正如堆栈中的一个问题中所建议的那样,为了解决这个错误,我已经用'user2 @ testXyz / spark'取代了Receiverjid:'user2 @ testXyz'但是我还是得到了相同的错误。

As suggested in one of question on stack to resolve this error I have replaced Receiverjid: 'user2@testXyz' by 'user2@testXyz/spark' but am still getting same error.

推荐答案

不知道在setProxyCandidates中设置什么,但我正在设置我的服务器名称。

Don't know what to set in setProxyCandidates, but I am setting my Server name.

<错误代码=503type =cancel>< service-unavailable xmlns =urn:ietf:params:xml:ns: xmpp-stanzas/>< / error>

解决方案:传递完整的jabber id: username @ domain / resource。
在我的情况下我改变了'user2 @ testXyz / spark;到'user2 @ testXyz / Spark 2.6.3'


我不知道如何找到这些资源参数。我检查了XMPPJID类的资源参数,但它是nil。我通过查看一些控制台日志找到了这些参数。如果有人知道如何从任何xmpp类中找到它,请告诉我。

Solution: Pass full jabber id:username@domain/resource. In my case I have changed 'user2@testXyz/spark; to 'user2@testXyz/Spark 2.6.3'

I don't know how to find these resource parameters. I have checked XMPPJID class's resource parameter but it is nil. I found these parameters by seeing some console logs. If anybody know how to find this from any xmpp class then please let me know.

这篇关于使用XMPP进行文件传输(Extension XEP-0065)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆