向多个客户端推送近乎实时的位置更新

Posted

技术标签:

【中文标题】向多个客户端推送近乎实时的位置更新【英文标题】:Pushing near real time position updates to a number of clients 【发布时间】:2013-04-14 09:37:44 【问题描述】:

我目前正处于设计跨平台移动应用程序(iosandroid、WP8)的早期阶段。在其核心,该应用程序将允许未知数量的客户端设备之间基于接近度的交互。

有人可以推荐一个框架或技术,让我可以将服务器生成的基于位置的邻近警报推送到甚至可以很好地扩展的客户端吗?推送通知(使用 PushSharp 跨平台)是否是一个可行的选择,或者推送通知是否总是与设备上的某种 toast 通知齐头并进?

更新:应该延迟 30 秒甚至一分钟。

【问题讨论】:

【参考方案1】:

推送通知有很长的延迟时间可以为您提供real-time 附近的任何内容。此外,推送通知也不能保证到达设备。

您确实需要考虑位置更新应该限制多少时间。您还应该对各种设备上的 GPS 更新速度进行一些测试。我在 Nexus 4 上进行了测试,它也不是接近实时的。因此,在您的整个应用程序中,无论是服务器端还是客户端,您都会遇到让您的real-time 愿望大失所望的事情。

但是,如果您可以忍受几秒到 30 秒或更长时间的延迟,那么推送通知对您来说效果很好,它们也可以很好地扩展。

编辑:

推送通知总是与某种吐司齐头并进 设备上的通知?

有一个概念称为 RAW 通知,它允许您使用通知发送任意信息。但是就个人而言,我只会通知客户端有关服务器上准备好的更新,然后它可以获得应用程序所需的所有信息。这是因为正如我所说,推送通知不能保证永远到达设备,还因为您可以在通知中嵌入多少信息。

所以我对流程的建议是:

    客户端 A 更新其位置并将其发送到 Web 服务 Web 服务从客户端 A 接收信息并为所有其他需要客户端 A 信息的客户端准备通知,并推送有关他们需要更新其信息的信息。 客户端 B 收到推送通知,告诉它从 Web 服务刷新数据并执行此操作。

如果应用程序处于后台状态,这将很有效。在前台显示时,我会每隔一秒左右轮询一次服务器;仍然收到通知,只是强制客户端更新。

【讨论】:

应该延迟 30 秒甚至一分钟。我已经更新了问题以反映这一点。感谢您指出这一点。【参考方案2】:

对于“缩放良好”部分,您可能还想看看Windows Azure Service Bus Notification Hubs。它目前处于预览阶段,仅支持 Windows 8 应用商店应用和 iOS,但对 Android 和 Windows Phone 的支持正在开发中。

【讨论】:

以上是关于向多个客户端推送近乎实时的位置更新的主要内容,如果未能解决你的问题,请参考以下文章

推送或拉取近乎实时的自动化服务器?

通过 Django Channels 和 Websockets 向客户端推送实时更新

服务器如何跟踪实时数据推送场景中连接的所有客户端?

反向Ajax,实现服务器向客户端推送消息

winform上如何实现服务器消息实时推送?

Flask SocketIO 服务端向客户端实时推送