AFRocketClient是否适用于POST

时间:2014-05-23 06:54:23

标签: ios objective-c sockets post afnetworking

在我的应用程序的特定视图控制器上,用户按下按钮以调用REST POST请求。按钮通常被推几次。我正在使用AFNetworking 2.0来做到这一点。

POST请求和成功回调之间的延迟时间非常不稳定。有时它< 1秒钟,而其他时间则是几秒钟或更长时间。我要求滞后时间尽可能少。

一个可能的原因是TCP连接被关闭并重复重新打开。一些Stackoverflow文章提到,如果几秒钟后没有发送请求,iOS将关闭连接。实际上,当我使用NSTimer每2.5秒不断发送POST请求时,时间延迟减少到< 1秒。

但这似乎是一种粗暴的做事方式,我担心服务器端可能会被太多的请求淹没(这里的服务器实际上是一个覆盆子pi)。还有另一种方法吗? HTTP Persistent Connection提及AFRocketClient,但我尝试了它没有成功。可能是AFRocketClient仅用于服务器发送事件,而我正在做“客户端发送事件”吗?或者我的AFRocketClient实现错了?不完全理解火箭代码片段。

提前致谢!

我的代码如下:

    - (void)updateSpeed {

    NSURL *baseURL = [NSURL URLWithString:BaseURLString];
    NSDictionary *parameters = @{@"command": @"48",
                                 @"dat": @"0",};

    //Create instance of AFHTTPSessionManager and set response to default JSON
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    //Pass POST request

    [manager POST:@"submit" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {

         self.status = responseObject;
         for (id key in self.status) {
         NSLog(@"key: %@, value: %@ \n", key, [self.status objectForKey:key]);
         }
      [client SUBSCRIBE:@"submit" usingBlock:^(NSArray *operations, NSError *error) {
    for (AFJSONPatchOperation *operation in operations) {
        switch (operation.type) {
            case AFJSONAddOperationType:
                [resources addObject:operation.value];
                break;
            default:
                break;
        }
    }
} error:nil];
    } failure:^(NSURLSessionDataTask *task, NSError *error) {

        NSLog(@"%@", [error localizedDescription]);

    }];
}

- AFRocketClient Github

0 个答案:

没有答案