【问题标题】:SOCKS5 connection times out (GCDAsyncSocket). (OpenFire, XEP-0065 and iOS XMPPFramework)SOCKS5 连接超时 (GCDAsyncSocket)。 (OpenFire、XEP-0065 和 iOS XMPPFramework)
【发布时间】:2012-05-05 00:52:34
【问题描述】:

问题:我正在尝试使用 iOS XMPPFramework 和 OpenFire 服务器的 TURNSocket (XEP-0065 - SOCKS5)。我希望能够发送和接收文件。但是,在大多数情况下,接收方没有返回任何响应。我目前怀疑问题与 OpenFire 代理服务器有关,它超时了!这是在本地网络上设置的,我已经编辑了 hosts 文件以指向它。

注意:我的代码基础来自以下教程:http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/

XML 和错误:发件人发送以下 XML(在来回发送一些其他 XEP-0065 XML 之后)...

<iq type="set" 
    to="friendsUsername@beta.myCompany.co.uk/spark" 
    id="DD96A581-BFA3-47BC-A3C0-D26AD48D7442">
    <query xmlns="http://jabber.org/protocol/bytestreams" 
        sid="DD96A581-BFA3-47BC-A3C0-D26AD48D7442" 
        mode="tcp">
        <streamhost xmlns="http://jabber.org/protocol/bytestreams"
            jid="proxy.beta.myCompany.co.uk" 
            host="127.0.1.1"
            port="7777"/>
    </query>
</iq>

如果我与我的应用程序的另一个实例聊天,我在尝试使用 proxy.beta.myCompany.co.uk 时在收件人中收到以下错误

Error Domain=GCDAsyncSocketErrorDomain Code=3 "尝试连接到 主机超时”

所以我的主要问题是,为什么会超时?

额外信息:如果我在我的应用程序的一个实例和 Adium IM 聊天客户端之间进行聊天,我没有得到任何回应。但是,如果我与 Spark IM 聊天客户端聊天,我会收到以下响应...

<iq xmlns="jabber:client" 
    id="9A34F268-9FC9-44F8-9662-4651A9E0B633" 
    to="myUsername@beta.myCompany.co.uk/d04f6694" 
    from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" 
    type="error">
        <query xmlns="http://jabber.org/protocol/bytestreams"
            sid="9A34F268-9FC9-44F8-9662-4651A9E0B633"
            mode="tcp">
            <streamhost jid="proxy.beta.myCompany.co.uk" 
            host="127.0.1.1" 
            port="7777"/>
        </query>
    <error code="406" 
        type="MODIFY">
            <not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

【问题讨论】:

  • 我注意到我发送的 XML 中的 sid 和 id 是相同的!但是,如果我制作一个新的 sid,它似乎并不能解决问题。这与问题有关吗?
  • 我遇到了同样的问题..!在特定时间间隔后出现失败错误。你解决了这个问题吗?
  • 还没有。如果您找到答案,请告诉我,有一个大而闪亮的绿色勾号等着您!
  • 你能发布代码来检索特定 JID 的资源路径吗?我试过 jid.resource 但它是空的
  • 如果它为空,你可能没有资源。尝试 [jid full] 查看完整的 jid。如果最后没有资源,就没有资源。请记住,如果您使用的是我正在使用的同一教程中的代码,它会使用没有资源的硬编码 jid。您可能需要更改代码,以便它使用您在开始聊天时单击的“朋友”的 jid。

标签: proxy xmpp openfire socks gcdasyncsocket


【解决方案1】:

在 OpenFire 上,我需要使用“xmpp.proxy.externalip”的系统属性来设置代理的 ip。

【讨论】:

  • 我已经在我的本地网络机器上安装了 open fire。那么,xmpp.proxy.externalip这个属性的值应该是多少呢。能否请您详细说明
  • 就我而言,我已经输入了服务器的 IP 地址,但是在互联网上进行了快速搜索后,人们说您应该输入外部客户端可以像这样访问服务器的地址 - 代理.chat.somedomain.com
  • 但正如我所说,我已经将它安装在本地网络的一台机器上,所以我怎样才能获得它的可公开访问的 IP
  • 我不确定我有没有这方面的经验。如果您觉得我的 Stack Overflow 问题没有解决您的问题,您需要搜索一个可以解决问题的问题或开始一个新问题。
  • 'xmpp.proxy.externalip 哪个IP??当我在该服务器上使用 1 个服务器 openfire 安装时,现在想在其中使用 xmpp 连接 2 1 个 android 和 1 个 ios 用户,然后发送图像,但消息是服务不可用,类型 503 发生
猜你喜欢
  • 2012-04-29
  • 2012-06-16
  • 2012-04-24
  • 2012-09-02
  • 2012-07-17
  • 2013-07-26
  • 2014-08-09
  • 2015-01-01
相关资源
最近更新 更多