Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌云消息或XMPP_Java_Android_Xmpp_Google Cloud Messaging - Fatal编程技术网

Java 谷歌云消息或XMPP

Java 谷歌云消息或XMPP,java,android,xmpp,google-cloud-messaging,Java,Android,Xmpp,Google Cloud Messaging,我有一个项目需要Android客户端和服务器之间的通信 通信流程是: 客户端定期(每10秒)将其位置发送到服务器 服务器是一个桌面应用程序(C#或Java)。通常,服务器自行完成工作,但有时它需要向多个特定客户端发送命令(需要实时操作)) 对于从客户端到服务器的方向,没有问题。但反过来说,从服务器到客户端,我有一些问题。我正在使用谷歌云消息,但我意识到有一些命令延迟或丢失。我还考虑了XMPP技术。如果我使用XMPP,服务器和客户端将成为XMPP服务器的用户(如聊天用户)。这是相当好的情况下,

我有一个项目需要Android客户端和服务器之间的通信

通信流程是:

  • 客户端定期(每10秒)将其位置发送到服务器
  • 服务器是一个桌面应用程序(C#或Java)。通常,服务器自行完成工作,但有时它需要向多个特定客户端发送命令(需要实时操作)
对于从客户端到服务器的方向,没有问题。但反过来说,从服务器到客户端,我有一些问题。我正在使用谷歌云消息,但我意识到有一些命令延迟或丢失。我还考虑了XMPP技术。如果我使用XMPP,服务器和客户端将成为XMPP服务器的用户(如聊天用户)。这是相当好的情况下,除了失去互联网连接


任何有XMPP服务器或/和GCM经验的人,请给我一些建议。

XMPP/Jabber用于实时通信。如果你想开发像“whatsapp”这样的聊天应用程序,那么你应该使用XMPP

GCM是一种云,即使您的应用程序未运行,它也会在发送之前存储您的邮件。云会保存您的邮件,并在您的设备连接到internet后立即发送


您的要求是实时聊天,因此您必须使用XMPP。

XMPP/Jabber用于实时通信。如果你想开发像“whatsapp”这样的聊天应用程序,那么你应该使用XMPP

GCM是一种云,即使您的应用程序未运行,它也会在发送之前存储您的邮件。云会保存您的邮件,并在您的设备连接到internet后立即发送


您的要求是实时聊天,所以您必须使用XMPP。

我同意Brontok的观点,除了:

“GCM是一种云,即使您的应用程序未运行,它也会在发送之前存储您的邮件。云会保存您的邮件,并在您运行应用程序后立即发送。”


GCM存储您的消息,以便在您连接网络时发送(可以访问Android play服务),即使您的应用程序未运行,您也会收到消息,如果通过通知您可以“恢复”您的应用程序,即使它已“死亡”

我同意Brontok的观点,但以下情况除外:

“GCM是一种云,即使您的应用程序未运行,它也会在发送之前存储您的邮件。云会保存您的邮件,并在您运行应用程序后立即发送。”


GCM存储您的消息,以便在您有网络连接时发送它们(可以访问Android play服务),即使您的应用程序未运行,您也会收到消息,并且如果通过通知您可以“恢复”您的应用程序,即使它“死了”

我已经尝试使用XMPP代替GCM。 因为客户的移动速度通常非常快,所以他们使用3G或4G来保持互联网连接。 我使用以下场景进行了测试:

  • 服务器计数从1开始,并每30秒将此数字发送到客户端
  • 当客户机收到该号码时,它只是响应服务器
  • 服务器接收响应并计算消息的“往返时间”
我测试了3G和4G连接,在每个测试中,服务器数从1到600

结果如下:

3G:

  • 损失:10/600
  • 平均RTT:5.002秒
4G:

  • 损失:4/600
  • 平均RTT:1.112秒

实际上,如果客户使用3G连接,延迟是不可接受的。你有什么办法解决这个问题吗?

我已经尝试使用XMPP而不是GCM。 因为客户的移动速度通常非常快,所以他们使用3G或4G来保持互联网连接。 我使用以下场景进行了测试:

  • 服务器计数从1开始,并每30秒将此数字发送到客户端
  • 当客户机收到该号码时,它只是响应服务器
  • 服务器接收响应并计算消息的“往返时间”
我测试了3G和4G连接,在每个测试中,服务器数从1到600

结果如下:

3G:

  • 损失:10/600
  • 平均RTT:5.002秒
4G:

  • 损失:4/600
  • 平均RTT:1.112秒

实际上,如果客户使用3G连接,延迟是不可接受的。您有什么想法可以解决这个问题吗?

实际上,对于上游,我构建了一个Php Web服务器,以便Android客户端可以将位置信息发布到网页上,然后存储在数据库中。因此,大多数问题都是从服务器向客户端发送命令。无论如何,我也认为你的建议是正确的!实际上,对于上游,我构建了一个PHPWeb服务器,这样Android客户端可以将位置信息发布到网页上,然后存储在数据库中。因此,大多数问题都是从服务器向客户端发送命令。无论如何,我也认为你的建议是正确的!是的,我也同意你关于GCM的这一点。然而,你认为我也应该使用XMPP吗?是的,我也同意你关于GCM的这一点。但是,您认为我也应该使用XMPP吗?