從iPad上,我使用NSURLRequest來輪詢我WLAN上的http服務器上的文件。我每秒鐘閱讀一次該文件。我使用下面的代碼來讀取文件。同步NSURLConnection和端口使用?
NSURLRequest *request = [NSURLRequest requestWithURL:myURL
cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval:30.0];
// Get the data
NSURLResponse *response;
NSError *dataError;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&dataError ];
在服務器上運行netstat顯示的是以下網絡活動(其中10.0.1.11是iPad的IP地址,這是輪詢服務器:
Proto Local Address Foreign Address State
TCP 10.0.1.16:80 10.0.1.11:56999 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57010 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57011 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57012 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57013 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57014 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57015 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57016 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57017 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57018 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57019 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57020 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57021 TIME_WAIT
TCP 10.0.1.16:80 10.0.1.11:57022 ESTABLISHED
我應該關注的是,有多個端口在iPad端使用?我應該在關閉後「關閉」NSURLConnection嗎?我正在使用ARC。
我在網絡上無法說出來......當你將長輪詢描述爲從服務器聽新消息時,你是否確實是在傾聽響應?我認爲消息是從客戶端發起的,並等待來自服務器的單個響應?在長時間投票時會做更多的閱讀。無論如何,我得到的結論是1Hz輪詢不止有一個原因,特別是iPad /客戶端因保持WiFi活躍而導致的功耗? –
值得一提的是,降低輪詢頻率似乎可以更好地重複使用iPad的出站端口。感謝指針。 –
我正在討論的「長期民意測驗」技術涵蓋如下:https://en.wikipedia.org/wiki/Push_technology#Long_polling您連接到服務器並要求「下一次更新」。在實際上有更新之前,它不會回答您。 –