簡體   English   中英

如何避免每五秒鍾進行一次新連接?

[英]How can I avoid making a new conection every five seconds?

每五秒鍾一個功能:

private boolean ping() {
    try {
        URL pingServerUrl = new URL(serverResourceLocator);
        HttpURLConnection connection = (HttpURLConnection) pingServerUrl.openConnection();
        if(connection.getResponseCode() == 200) {
            lastPingSuccessful = true;
        }
        System.out.println("pinged");
    }catch(Exception exc) {
       exc.printStackTrace(); 
       return lastPingSuccessful;
    }

    return lastPingSuccessful;

}

叫做。 它是ping功能的類型。 它嘗試連接到服務器上的servlet,並發送一些憑證以及URL serverResourceLocator 困擾我的是每5秒打開一個新連接。

如何避免呢?

您無法回收HTTP連接。 HTTP是無狀態協議。 最好的辦法是一旦打開連接就不要關閉它,並保持其活動狀態,並從服務器向客戶端發送心跳消息。

如果我想使用該功能,即測試servlet,則最好將連接部分保留在其中; 您可以從測試腳本中獲得更多的覆蓋范圍。 每5秒建立一次連接幾乎沒有任何意義。 服務器不會有任何感覺。

否則,僅將連接存儲為全局變量。 並在每次請求時重用它。

我認為這沒有其他選擇。 您必須建立http連接才能獲取URL的狀態。

以下2是Java的輕量級替代品

  • Unix curl實用程序
  • 來自Java腳本的Ajax調用

假設我們要在EXPIRY_TIME之后刪除客戶端的數據。

我認為可以采用以下兩種方法之一:

  1. 您可以在會話修改時間(建議最后訪問時間)中檢查某些cron作業(調度程序)
  2. 對於每個客戶端請求,在平面文件系統中設置訪問日志,並在訪問日志中檢查cron作業

在任何情況下,如果上次訪問時間> EXPIRY_TIME,則刪除客戶端的數據。

這種方法將節省往返行程,並有助於減少流量。

作業完成后,您可以釋放連接。無論如何,java webserver都設計為可以處理多個請求。即使每5秒有一個請求到達服務器,這也不成問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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