簡體   English   中英

無需等待響應的 HTTP 請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM