【问题标题】:Real time messaging service for mobile and desktop devices移动和桌面设备的实时消息服务
【发布时间】:2016-02-20 20:05:17
【问题描述】:

我正在寻找一种将事件从我的服务器推送到客户端的解决方案,这些客户端将是 Android、iOS 和桌面(网络)用户。

我看过很多关于 Parse、Amazon SNS 和 Google Cloud Messaging 的帖子,但没有人提到它们的速度和最常见的应用程序,或者与简单的 TCP 流或 websockets 进行比较?

我需要每个客户端最多 50 个事件/秒 双向l 吞吐量(¬1kb 每个事件),最大 150 毫秒延迟。

websocketsSNS/Parse/GCM 相比,仅使用 TCP 流 事件有哪些缺点?

【问题讨论】:

  • 你也可以考虑基于 msg-bus 的服务,比如 rabbitmq。
  • @RobertRowntree 我想知道是否有人对这些工具有经验并且可以提供优点/缺点。
  • 您是否有喜欢的语言,例如:Java、PHP、js、net ...?

标签: events parse-platform websocket google-cloud-messaging amazon-sns


【解决方案1】:

推送通知(GCM 和 APN)

优点:即使客户端应用程序未运行,您也可以访问设备。

缺点:吞吐量低;高延迟

原始 TCP

优点:高吞吐量;低延迟;双向

缺点:不通过典型的代理和防火墙;需要客户端应用程序正在运行

WebSockets

优点:高吞吐量;低延迟;双向;穿越防火墙

缺点:并非所有代理都支持它们;需要客户端应用程序正在运行

此外,还有HTTP StreamingHTTP Long Polling

【讨论】:

    【解决方案2】:

    你可以试试 SignalR。

    ASP.NET SignalR 是一个供 ASP.NET 开发人员使用的新库,可以非常简单地将实时 Web 功能添加到您的应用程序中

    我的一位同事已将此库用于 web、window、android、mac 等进行实时消息传递。

    【讨论】:

      【解决方案3】:

      您可以在这里找到一些基准测试:http://blog.arungupta.me/rest-vs-websocket-comparison-benchmarks/

      这个更具技术性的问题也可能对您或其他人有所帮助:What is the fundamental difference between WebSockets and pure TCP?

      引用已接受的答案:

      当您在 Intranet 边界内工作时,通过 TCP 套接字进行通信会更容易,因为您可能可以控制该网络上的机器并且可以打开适合进行 TCP 连接的端口。

      通过互联网,您正在与另一端的其他服务器进行通信。他们极不可能打开任何旧套接字以进行连接。通常它们只有少数标准端口,例如用于 HTTP 的端口 80 或用于 HTTPS 的 443。因此,要与服务器通信,您必须使用其中一个端口进行连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 2017-04-04
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        相关资源
        最近更新 更多