2013-01-17 81 views
3

保持連接會話這是我的連接代碼:如何使用sendSynchronousRequest

- (void)sendData: (NSString*)someData {  
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:nsURL] 
                 cachePolicy:NSURLRequestUseProtocolCachePolicy 
                timeoutInterval:180.0]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setTimeoutInterval:180.0]; 
[theRequest setHTTPBody:[sdata dataUsingEncoding:NSASCIIStringEncoding]]; 

NSError *error= nil; 
NSData *result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; 
} 

我調用此方法,每當我要送一些請求給用戶。但是,我想維護一個特定的連接會話,併發送請求,而不是反覆創建連接。 (因爲URL是一個安全的連接,每次創建連接時都會浪費很多時間)。

我該怎麼做?有沒有什麼辦法在這個類中創建一個用於連接的全局對象(其中寫入sendData方法),以便在該對象的生命週期中只有一個連接。

+0

您是否確實打算保持連接打開(由於手機操作員的限制,該功能無法工作 - >請參閱SocketIO的解決方法,又名長輪詢)還是您想保留登錄會話? – Till

+1

我試圖保持連接打開,因爲它是一系列請求<-->我必須做的迴應。如果我每次創建一個連接,整個過程變得非常緩慢。 –

+0

@NikitaP是否有任何答案有幫助或問題仍然存在? –

回答

0

除了蜂窩提供商的限制外,保持連接開放的選擇取決於服務器,而不是客戶端。如果這是通過HTTPS的請求,則需要查看有關保持活動連接的服務器文檔,並將超時值增加到適用於您的應用程序的值。

URL加載系統將自動重新使用到同一服務器的連接,只要它尚未被服務器關閉。

請注意,將服務器上的保持活動超時值增加到較大的值將意味着服務器使用的資源可能會顯着增加。

相關問題