Java 谷歌云消息或XMPP
我有一个项目需要Android客户端和服务器之间的通信 通信流程是:Java 谷歌云消息或XMPP,java,android,xmpp,google-cloud-messaging,Java,Android,Xmpp,Google Cloud Messaging,我有一个项目需要Android客户端和服务器之间的通信 通信流程是: 客户端定期(每10秒)将其位置发送到服务器 服务器是一个桌面应用程序(C#或Java)。通常,服务器自行完成工作,但有时它需要向多个特定客户端发送命令(需要实时操作)) 对于从客户端到服务器的方向,没有问题。但反过来说,从服务器到客户端,我有一些问题。我正在使用谷歌云消息,但我意识到有一些命令延迟或丢失。我还考虑了XMPP技术。如果我使用XMPP,服务器和客户端将成为XMPP服务器的用户(如聊天用户)。这是相当好的情况下,
- 客户端定期(每10秒)将其位置发送到服务器
- 服务器是一个桌面应用程序(C#或Java)。通常,服务器自行完成工作,但有时它需要向多个特定客户端发送命令(需要实时操作))
任何有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秒将此数字发送到客户端
- 当客户机收到该号码时,它只是响应服务器
- 服务器接收响应并计算消息的“往返时间”
- 损失:10/600
- 平均RTT:5.002秒
- 损失:4/600
- 平均RTT:1.112秒
实际上,如果客户使用3G连接,延迟是不可接受的。你有什么办法解决这个问题吗?我已经尝试使用XMPP而不是GCM。 因为客户的移动速度通常非常快,所以他们使用3G或4G来保持互联网连接。 我使用以下场景进行了测试:
- 服务器计数从1开始,并每30秒将此数字发送到客户端
- 当客户机收到该号码时,它只是响应服务器
- 服务器接收响应并计算消息的“往返时间”
- 损失:10/600
- 平均RTT:5.002秒
- 损失:4/600
- 平均RTT:1.112秒
实际上,如果客户使用3G连接,延迟是不可接受的。您有什么想法可以解决这个问题吗?实际上,对于上游,我构建了一个Php Web服务器,以便Android客户端可以将位置信息发布到网页上,然后存储在数据库中。因此,大多数问题都是从服务器向客户端发送命令。无论如何,我也认为你的建议是正确的!实际上,对于上游,我构建了一个PHPWeb服务器,这样Android客户端可以将位置信息发布到网页上,然后存储在数据库中。因此,大多数问题都是从服务器向客户端发送命令。无论如何,我也认为你的建议是正确的!是的,我也同意你关于GCM的这一点。然而,你认为我也应该使用XMPP吗?是的,我也同意你关于GCM的这一点。但是,您认为我也应该使用XMPP吗?