2014-10-31 81 views
0

的問題很簡單:Android的持續性HTTP連接到推送服務器

  1. 連接到HTTP服務器,並保持連接打開在幾分鐘的時間。
  2. 觸發一個回調函數每個接收時間數據,而不是當連接完成接收所有數據時。

我正在製作一個Android聊天應用程序,以破解網站上Java腳本客戶端聊天功能。我有權限,但不會更改代碼以促進它(具有許多依賴關係的遺留代碼)。到達的實時更新是通過1個HTTP請求完成的,服務器通過每隔幾秒發送一次「:」或「:-1」打開服務器,然後將JSON消息推送到客戶端。並且不會斷開連接。

我並不需要保持連接打開所有的時間,並有任何喚醒鎖功能,因爲有另一個系統加載最後30條消息,所以當聊天回來成爲關注的焦點,可以調用。但是這使用了大量的數據,並不緊湊。

我花了很多時間試圖找到正確的解決方案,並已經看過(AndroidAsync,Android系統的查詢,查詢的機器人,離子,...)。

+0

我不知道我的理解正確,您想達到什麼,但如果你正在尋找進入推到Android可能要考慮GCM。 – 2014-10-31 13:00:42

+0

哦,如果我想推到Android我會用GCM,沒有我想要一個應用程序捆綁到一個預先存在的推送服務。 – Smellymoo 2014-10-31 15:29:57

回答

0

OK,最好的辦法是使用它的TCP連接(和編寫一些代碼來解析HTTP)來處理。

我在一個線程,即循環使用的(來自java.net.Socket中)一插座,睡然後檢查是否有在緩衝器中的任何新數據。

非常輕的重量,完美的作品。由於我只想在服務器在持久連接上顯示數據時檢索數據,因此不需要任何http開銷。

確實需要假HTTP GET請求來啓動它:

  PrintWriter pw = new PrintWriter(socket.getOutputStream()); 
      pw.println("GET/HTTP/1.1"); 
      pw.println("Host: www.example.com"); 
      pw.println(""); 
      pw.flush();