2011-04-01 47 views
2

大家好 我構建了一個需要來自PHP服務器的數據的android應用程序。Android和PHP之間的最快通信

可以說我在我的web應用程序上有一個文本輸入。每當用戶觸發一個「onkeydown」時,我想將角色發送到Android應用程序,我的Android應用程序將只輸出當前角色。 Web應用程序會不斷髮送小的「命令」給myAandroid應用程序。我想知道接收那些發送/接收那些命令的最快方式是什麼。

我看到了一些關於如何實現的選項。

1)我的android應用程序不斷輪詢服務器,看看是否寫了一條消息。

2)我的Android應用程序將設置一個套接字服務器,PHP腳本將連接並推送消息。

3)我想這是非常緩慢和不準確的,但我想我可以使用推送通知。

有沒有其他的選擇?那麼最好的解決方案是什麼?

回答

3

推送消息不慢,只是不準確(即不保證它將被髮送)。 儘管如此,接收推送消息的速度可能比每隔五秒輪詢服務器的速度要快。

如果你可以承受的時間值得結合這兩種方法,即推送消息和常規池作爲後退。

這就是說,你沒有提供足夠的信息來說明你在做什麼,所以很難提出任何建議。

最快的方法是連接到服務器,保持連接打開,並讓PHP緩慢地傳輸少量的亂碼數據,直到它發送一條真正的消息。這是最快的事情,但在電池使用等方面當然是不可能的。所以請解釋你想做的事情。

UPDATE以遠程命令您需要打開連接的手機。有很多方法可以做到,我只會發佈一個概念驗證php。

<?php 
//to send a command to the phone just create a file 
//named command.txt in this directory 
//from any other script 
set_time_limit(0); 

while (true) 
{ 
    if (file_exists('command.txt')) 
    { 
     $command = file_get_contents('command.txt'); 
     rm('command.txt'); 
     echo $command; 
      flush(); 
     unset ($command); 
    } else { 
     echo asc(0); //prevent the connection to be dropped 
      flush(); 
     usleep(200); //sleeps for 200 ms 
    } 
} 

?> 

這個例子缺少很多東西,它只是一個關於如何處理與PHP的開放連接的概念證明。 客戶端將需要去除所有零字節並保留下載的其餘數據。 這是絕對最快的方式來處理單向遠程交互,另一方面,將吸電池相當快:)。

+0

嗨塔科。我更新了我的示例,以更好地反映即時通訊嘗試歸檔:)我不明白爲什麼推送通知會更快,因爲我將不得不添加一個addiotional「步驟」爲我的消息「網絡」 - >「推服務」 - >「設備」。 – 2011-04-01 18:13:15

+0

如果您平均每5秒輪詢一次服務器,您可能需要等待2.5秒,直到您發現服務器有新消息。推送通知可能需要不到一秒的時間才能到達。 – tacone 2011-04-01 18:57:21

+0

正在使用推送通知,這真的是我需要調查的一種方式嗎?我認爲使用這種推送服務可能被認爲是垃圾郵件?假設電池沒有任何關於這個應用程序的擔憂,那麼插座解決方案是否是理想的選擇? – 2011-04-01 19:04:36