如何使用XMPPFramework设置邀请请求连接超时?

时间:2016-07-09 13:00:37

标签: ios objective-c xmpp xmppframework

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

  
      
  1. App尝试与Server建立连接的超时时间。此超时是可配置的:
  2.   
[_xmppStream connectWithTimeout:kTimeOutForChat error:&error]
  
      
  1. XMPPStream检查邀请批准/与Spark连接后拒绝的超时时间在库文件中。
  2.   

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

 FileName : XMPPStream.m
 #define TIMEOUT_XMPP_READ_STREAM   -1

我想要-140。我不想编辑库文件。有没有办法在不修改图书馆的情况下进行设置?

编辑:TimeOut Macro附近的代码

  /**
  * 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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

#undef  TIMEOUT_XMPP_WRITE
#define TIMEOUT_XMPP_WRITE 40

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