移动和桌面设备的实时消息服务

Real time messaging service for mobile and desktop devices

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

我看过很多关于 Parse、Amazon SNS 和 Google 云消息传递的帖子,但没有提到它们的速度和最常见的应用程序或与简单的 TCP 流或 websockets 的比较?

我需要每个客户端达到 50 events/second bi-directonal 吞吐量(每个事件 1kb),最大延迟 150 毫秒

仅使用事件的 TCP 流 对比 websockets 对比 SNS/Parse/GCM[ 有什么缺点=25=]?

推送通知(GCM 和 APNs)

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

缺点:吞吐量低;高延迟

原始 TCP

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

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

WebSockets

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

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

此外,还有HTTP StreamingHTTP Long Polling

你可以试试 SignalR。

ASP.NET SignalR 是面向 ASP.NET 开发人员的新库,它使向您的应用程序添加实时 Web 功能变得异常简单

我的一位同事将此库用于 Web,window、android、mac 等用于实时消息传递。

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

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

引用已接受的答案:

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

通过 Internet,您正在与另一端的其他人的服务器通信。他们极不可能为连接打开任何旧套接字。通常他们只有几个标准端口,例如用于 HTTP 的端口 80 或用于 HTTPS 的 443。因此,要与服务器通信,您必须使用这些端口之一进行连接。