![](/img/trans.png)
[英]Process for waiting for method response without blocking other HTTP requests
[英]HTTP requests without waiting for response
是否可以在不等待響應的情況下發送 HTTP 請求?
我正在從事一個需要記錄傳感器數據的物聯網項目。 在每個設置中,都有許多傳感器和一個中央協調器(主要使用 Raspberry Pi 實現),它從傳感器收集數據並通過互聯網將數據發送到服務器。
此日志記錄每秒發生一次。 因此,數據的發送應該很快,這樣隊列就不會變得太大。 如果請求不等待響應(如 UDP),它會快得多。
如果時不時丟棄很少的數據包,那也沒關系。
另外,請告訴我實現這一點的最佳方法。 最好是Java。
服務器端使用PHP實現。
提前致謝!
編輯:傳感器是無線的,但它們使用的技術在發送到協調器時幾乎沒有(或沒有)延遲。 該協調器必須通過互聯網發送數據。 但是,假設互聯網連接不好。 因為這將在印度的偏遠地區實施。
您正在尋找一個異步 HTTP 庫,例如OkHttp 。 它允許指定異步執行的回調(由第二個線程)。 因此您的主線程繼續執行。
您可以將 GET 請求的 TCP 超時設置為小於一秒,並在線程中繼續重新觸發訪問。 為更多設備使用更多線程。
就像是:
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(1000); //set timeout to 1 second
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
...
}
如果訪問時間少於 1 秒,則讓線程休眠 1 秒的剩余時間。 如果將結果添加到線程安全隊列,則可以在另一個線程上使用結果。 確保處理異常。
您不能將 UDP 與 HTTP 一起使用,HTTP 只是 TCP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.