代码之家  ›  专栏  ›  技术社区  ›  duong_dajgja

谷歌云消息或XMPP

  •  0
  • duong_dajgja  · 技术社区  · 12 年前

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

    通信流程为:

    • 客户端定期(每10秒)将其位置发送到服务器
    • 服务器是一个桌面应用程序(C#或Java)。通常,服务器自己完成工作,但有时需要向一些特定的客户端发送命令( 需要实时性 )

    从客户端到服务器的方向没有问题。但在相反的方向上,从服务器到客户端,我遇到了一些问题。我正在使用谷歌云消息,但我意识到有一些延迟或命令丢失。我还考虑了XMPP技术。如果我使用XMPP,服务器和客户端将成为XMPP服务器的用户(就像聊天用户一样)。除了失去网络连接的情况外,它还不错。

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

    3 回复  |  直到 12 年前
        1
  •  3
  •   Jitender Dev    12 年前

    XMPP公司 / 急促而含混不清地说 用于实时通信。如果你想开发一个像“whatsapp”这样的聊天应用程序,那么你应该使用XMPP。

    通用控制模块 是一个云,即使你的应用程序没有运行,它也会在发送之前存储你的消息。云会保存你的消息,并在你的设备连接到互联网后立即发送。

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

        2
  •  1
  •   user2164757 user2164757    12 年前

    我同意Brontok的观点,除了:

    “GCM是一种云,即使你的应用程序没有运行,它也会在发送之前存储你的消息。云会保存你的消息,并在你运行应用程序时立即发送。”

    GCM会存储你的消息,以便在你连接网络时发送(可以访问Android播放服务),即使你的应用程序没有运行。你会收到消息,如果通过通知,你可以“复活”你的应用,即使它“死了”

        3
  •  1
  •   duong_dajgja    12 年前

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

    • 服务器从1开始计数,并每30秒将此数字发送到客户端
    • 当客户端收到号码时,它只响应服务器
    • 服务器接收响应并计算消息的“往返时间”

    我测试了3G和4G连接,在每次测试中,服务器的数量从1到600

    结果如下:

    3克:

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

    4克:

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

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