Android和PHP之间最快的通信

Android和PHP之间最快的通信,php,android,network-programming,Php,Android,Network Programming,大家好 我正在构建一个android应用程序,它需要来自PHP服务器的数据 假设我在web应用程序上有一个文本输入。每当用户触发“onkeydown”时,我想将角色发送到Android应用程序,我的Android应用程序只输出当前角色。web应用程序将不断向myAandroid应用程序发送小的“命令”。我想知道接收这些发送/接收这些命令的最快方式是什么 我看到了一些关于如何实现这一点的选项 1) 我的android应用程序不断地轮询服务器,查看是否有消息被写入 2) 我的Android应用程序将

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

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

我看到了一些关于如何实现这一点的选项

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

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

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


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

推送消息并不慢,只是不准确(即不能保证它会被发送)。 不过,接收推送消息可能比每五秒钟轮询服务器要快

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

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

最快的方法是连接到服务器,保持连接打开,让PHP缓慢地流式传输少量胡言乱语的数据,直到它有一条真正的消息要发送。这是最快的事情,但当然在电池使用等方面是不允许的。所以请解释一下你想做什么

更新要远程命令手机,您需要打开连接。有很多方法可以做到这一点,我将发布一个概念验证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处理开放连接的概念证明。 客户端需要剥离所有零字节,并保留下载的其余数据。
另一方面,这绝对是处理单向远程交互的最快方式,会很快消耗电池:)。

Hi tacone。我更新了我的示例以更好地反映我试图归档的内容:)我不明白推送通知为什么会更快,因为我必须为我的消息“web”->“推送服务”->“设备”添加额外的“步骤”。如果平均每5秒轮询一次服务器,则可能需要等待2.5秒,直到发现服务器有新消息。推送通知可能需要不到一秒钟的时间到达。使用推送通知这么重真的是我需要调查的一种方式吗?我认为像这样使用推送服务会被认为是垃圾邮件?。假设这个应用程序不需要考虑电池,那么插座解决方案是理想的选择吗?推送通知不符合您的要求,它们太多了。我是在你上次更新之前写的。我现在会更新我的答案。非常感谢你的帮助!