【问题标题】:Fastest communication between a Android and PHPAndroid 和 PHP 之间最快的通信
【发布时间】:2011-04-01 17:31:59
【问题描述】:

大家好 我正在构建一个需要来自 PHP 服务器的数据的 android 应用程序。

假设我在我的 Web 应用程序上有一个文本输入。每当用户触发“onkeydown”时,我想将字符发送到 Android 应用程序,而我的 Android 应用程序只会输出当前字符。 Web 应用程序会不断地向 myAandroid 应用程序发送小“命令”。我想知道接收这些发送/接收这些命令的最快方法是什么。

我看到了一些关于如何实施的选项。

1) 我的 android 应用程序不断地轮询服务器以查看是否已写入消息。

2) 我的 Android 应用程序将设置一个套接字服务器,PHP 脚本将连接该服务器并将消息推送到该服务器。

3) 我想这非常缓慢且不准确,但我想我可以使用推送通知。

还有其他选择吗?什么是最好的解决方案?

【问题讨论】:

    标签: php android network-programming


    【解决方案1】:

    推送消息并不慢,只是不准确(即不保证会发送)。 尽管如此,接收推送消息可能比每五秒轮询一次服务器要快。

    如果您有时间,值得将这两种方法结合起来,即推送消息和常规池作为后备。

    也就是说,你没有提供足够的信息来说明你在做什么,所以很难提出任何建议。

    最快的方法是连接到服务器,保持连接打开,让 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 处理开放连接的概念证明。 客户端需要去除所有零字节并保持下载的其余数据。 这绝对是处理单向远程交互的最快方式,另一方面,会很快消耗电池:)。

    【讨论】:

    • 嗨 tacone。我已经更新了我的示例以更好地反映我试图存档的内容:) 我不明白为什么推送通知会更快,因为我必须为我的消息“web”->“推送服务”->“设备”添加一个额外的“步骤” "。
    • 如果您平均每 5 秒轮询一次服务器,您可能需要等待 2.5 秒,直到您发现服务器有新消息。推送通知可能需要不到一秒的时间才能到达。
    • 使用如此繁重的推送通知真的是我需要调查的一种方式吗?我认为使用这样的推送服务可能被视为垃圾邮件?假设电池与此应用无关,那么插座解决方案会是理想的选择吗?
    • 推送通知不符合您的要求,它们太多了。我在你上次更新之前写过它。我现在会更新我的答案。
    • 非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多