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

How to set Invitation Request Connection Timeout with XMPPFramework?

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

  1. Timeout during which App tries to make connection with Server. This timeout is configurable:
[_xmppStream connectWithTimeout:kTimeOutForChat error:&error]
  1. Timeout at which XMPPStream checks for invitation approval/Decline after connection with Spark is in Library File.

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

 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

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

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

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

#undef  TIMEOUT_XMPP_WRITE
#define TIMEOUT_XMPP_WRITE 40

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