【问题标题】:How to set Invitation Request Connection Timeout with XMPPFramework?如何使用 XMPPFramework 设置邀请请求连接超时?
【发布时间】:2016-11-11 22:23:46
【问题描述】:

如何在 XMPP 中设置超时?据我搜索,我发现有两个超时。

  1. 应用程序尝试与服务器建立连接的超时。此超时是可配置的:
[_xmppStream connectWithTimeout:kTimeOutForChat error:&error]
  1. Spark 连接后XMPPStream 检查邀请批准/拒绝的超时在库文件中。

我正在寻找允许我在不修改库的情况下配置第二次超时的解决方案。

 FileName : XMPPStream.m
 #define TIMEOUT_XMPP_READ_STREAM   -1

我想要这个-140。我不想编辑库文件。有什么方法可以在不修改库的情况下进行设置?

编辑:代码接近超时宏

  /**
  * Seeing a return statements within an inner block
  * can sometimes be mistaken for a return point of the enclosing method.
   * This makes inline blocks a bit easier to read.
   **/
   #define return_from_block  return

  // Define the timeouts (in seconds) for retreiving various parts of the XML stream
  #define TIMEOUT_XMPP_WRITE         -1
  #define TIMEOUT_XMPP_READ_START    10
  #define TIMEOUT_XMPP_READ_STREAM   40

 // Define the tags we'll use to differentiate what it is we're currently reading or writing
 #define TAG_XMPP_READ_START         100
 #define TAG_XMPP_READ_STREAM        101
 #define TAG_XMPP_WRITE_START        200
 #define TAG_XMPP_WRITE_STOP         201
 #define TAG_XMPP_WRITE_STREAM       202
 #define TAG_XMPP_WRITE_RECEIPT      203

 // Define the timeouts (in seconds) for SRV

【问题讨论】:

  • 显示更多关于定义的代码,它之前是否有 if 语句?库是预先构建的还是您正在构建的?
  • @Wain 这个库是预构建的。我正在通过 Cocoa Pod 安装它。这是 Libray 的链接,我已经更新了我的问题,显示更多代码。 github.com/robbiehanson/XMPPFramework
  • 看起来不像是预构建的,但使用预处理器也不容易更改。我建议只是分叉项目并稍微编辑它......
  • 是的,我也想这样做。但认为可能存在其他解决方案,或者我无法获得执行此操作的方法名称。无论如何感谢您的解决方案:) @Wain

标签: ios objective-c xmpp xmppframework


【解决方案1】:

如果代码有一个#ifdef 来检查定义是否已经存在,那么您可以使用预处理器来定义您想要的值。但是,它没有,所以我想不出一个简单的方法是使用预处理器来替换它并保持它可编译。

最简单的解决方案就是分叉项目并维护一个小改动。这应该是一个低成本的解决方案,因为您的更改将仅限于一行,并且合并上游更改应该(通常)是自动的。

【讨论】:

    【解决方案2】:

    您可以在应用中重新定义预处理器宏。

    #undef  TIMEOUT_XMPP_WRITE
    #define TIMEOUT_XMPP_WRITE 40
    

    这可能会让您的开发人员更加困惑,我会谨慎使用它。

    【讨论】:

    • 我应该在哪里定义这个宏。在我的 ChatViewController ...或其他地方。我试过了,但它不起作用:(@jal
    • @RahulMishra 如果在使用宏之前重新定义宏会怎样?您能NSLog 验证该值实际上已更改为 40 吗?
    • 我持续收到聊天邀请请求,直到 1 分 6 秒。
    • @RahulMishra 这没有意义。你应该可以重新定义#define 没问题。该库是否在与您的应用集成之前编译?
    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多