1

我正在开发一个 iOS 聊天应用程序,因此要使媒体传输正常工作,我需要启用 mod_proxy65,并且我在 ejabberd.cfg 文件中启用了相同的默认设置:{mod_proxy65[]}. 在客户端,我正在使用适用于 iOS 的https://github.com/robbiehanson/XMPPFramework xmpp 框架。在 TURNSocket.mi 中使用了代理候选项dev.myserver.com代替 default jabber.org。现在当我尝试打开TURN连接时,接收和发送的iq系列如下:

发送:<iq type="get" to="dev.myserver.com" id="A9876DD0-B13C-4DC7-B812-2A6E653288BC"><query xmlns="http://jabber.org/protocol/disco#items"/></iq>

接收:<iq xmlns="jabber:client" from="dev.gungroo.com" to="smita@dev.myserver.com/24983171131368877324197828" id="A9876DD0-B13C-4DC7-B812-2A6E653288BC" type="result"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="conference.dev.myserver.com"/><item jid="irc.dev.myserver.com"/><item jid="proxy.dev.myserver.com"/><item jid="pubsub.dev.myserver.com"/><item jid="vjud.dev.myserver.com"/></query></iq>

发送:<iq type="get" to="proxy.dev.myserver.com" id="26D694FB-C679-478C-A3D1-A84B9A583534"><query xmlns="http://jabber.org/protocol/disco#info"/></iq>

接收:<iq xmlns="jabber:client" from="proxy.dev.myserver.com" to="smita@dev.myserver.com/24983171131368877324197828" id="26D694FB-C679-478C-A3D1-A84B9A583534" type="result"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="proxy" type="bytestreams" name="SOCKS5 Bytestreams"/><feature var="http://jabber.org/protocol/disco#info"/><feature var="vcard-temp"/><feature var="http://jabber.org/protocol/bytestreams"/><x xmlns="jabber:x:data" type="result"><field var="FORM_TYPE" type="hidden"><value>http://jabber.org/network/serverinfo</value></field></x></query></iq>

发送:<iq type="get" to="proxy.dev.myserver.com" id="C60068A2-985C-4C5C-87B3-C9FFFB41FDF0"><query xmlns="http://jabber.org/protocol/bytestreams"/></iq>

接收:<iq xmlns="jabber:client" from="proxy.dev.gungroo.com" to="smita@dev.myserver.com/24983171131368877324197828" id="C60068A2-985C-4C5C-87B3-C9FFFB41FDF0" type="result"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.dev.myserver.com" host="10.212.103.159" port="7777"/></query></iq>

这就是问题所在,它返回给我服务器 dev.myserver.com 的内部 IP 地址(10.212.103.159),导致 TURN 连接失败。为什么它不返回 proxy.dev.myserver.com 的外部 IP 地址?在同一页面上:proxy.dev.myserver.com 和 dev.myserver.com 都指向相同的外部 IP。并且端口 7777 在我的服务器 dev.myserver.com 上打开。有谁用过同样的方法,请帮忙??这是显示错误消息的最后一个 iq(发送和接收):

发送

<iq type="set" to="smita1@dev.myserver.com/38303823331368691199448799" id="2D376DBF-D437-48C8-B0FF-B10A5CD73240">
    <query xmlns="http://jabber.org/protocol/bytestreams" sid="2D376DBF-D437-48C8-B0FF-B10A5CD73240" mode="tcp">
        <streamhost xmlns="http://jabber.org/protocol/bytestreams" jid="proxy.dev.myserver.com" host="10.212.103.159" port="7777"/>
    </query>
</iq>

接收器

<iq xmlns="jabber:client" from="smita1@dev.myserver.com/38303823331368691199448799" to="smita@dev.myserver.com/278621573136869119737843" type="error" id="2D376DBF-D437-48C8-B0FF-B10A5CD73240">
    <query xmlns="http://jabber.org/protocol/bytestreams" sid="2D376DBF-D437-48C8-B0FF-B10A5CD73240" mode="tcp">
       <streamhost xmlns="http://jabber.org/protocol/bytestreams" jid="proxy.dev.myserver.com" host="10.212.103.159" port="7777"/>
    </query>
    <error type="cancel" code="501">
        <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

如果有人能指出我的问题,那就太好了。谢谢!

4

2 回答 2

1

这帮助我解决了这个问题。xx.xx.xx.xx 是我的外部 ip: {mod_proxy65, [{hostname, ["xx.xx.xx.xx"]}]},

于 2013-09-05T09:31:23.803 回答
0

看看这个,可以给个思路【XMPPFramework - TURNSocket收不到自己发的数据?]

还有[ http://xmpp.org/extensions/xep-0096.html],[iphone sdk中的XMPP发送/接收文件...?]

于 2013-05-18T19:10:20.287 回答