在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?

Posted

技术标签:

【中文标题】在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?【英文标题】:What is the best solution for real-time bi-directional communication between a web application running on a mobile phone and a server?在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是什么? 【发布时间】:2011-09-16 04:25:39 【问题描述】:

我正在寻找从手机到服务器的数以千计的同时连接,因此无论何时用户与他的手机交互,服务器都会发送和记录数据。此外,只要服务器有该用户的新信息,服务器就可以在不刷新浏览器的情况下推送该信息。我想知道什么更稳定以及您将如何构建它?

【问题讨论】:

【参考方案1】:

实现这一点的最佳解决方案是使用 WebSocket 通信。它是双向异步通信。目前每个浏览器都支持这个新标准,并且有大量可用的代码 sn-ps。你只需要谷歌它。有许多服务器和客户端框架。选择最适合您要求的一款。

WebSocket 规范的详细信息可在 -

获得

Websocket specification

【讨论】:

【参考方案2】:

一个好的实时框架或基础架构将拥有大量 API,可以让您将任何设备(无论采用何种技术)连接到实时服务器,例如适用于 iPhone 和 iPad 的 ios 客户端库、适用于多种平台(包括普通和 移动网络)的 JavaScript 客户端库、兼容 android 的 Java 库等。

一个有趣的想法可能是选择最适合您需求的框架或实时服务,然后使用PhoneGap 之类的东西。但是,正如@rt2088 所说,这取决于您是否需要将通知应用程序作为手机上的服务或作为独立应用程序运行。

选择还取决于您是否要安装、托管、维护和管理您自己的实时服务的扩展。如果没有,您可以使用许多服务,这样您就可以专注于构建您的应用程序。如果您确实想管理自己的基础架构,那么Comet Maturity guide 可能是一个好的开始。它有点过时了,但可能仍然是最好的参考。

推送新内容的能力 用户基于他的 GPS 位置 被“ping”到我们的服务器。基于 我们提供本地内容。什么 你说的是框架?

目前有许多实时框架可用。有些是托管服务,有些需要安装在您自己的硬件上。它们中的大多数将附带一堆采用不同技术的库,使它们更容易启动和运行,例如一个 javascript 库,它包装了 WebSocket 对象,还管理不支持 WebSockets 的 Web 浏览器的回退。

我刚刚创建了一个Real-Time Technologies Guide,其中列出了我能想到的所有实时技术,并提供了一堆与之相关的标签。

不会是 javascript 客户端库 如果是网络,则覆盖所有平台 应用?

如果应用程序是 Web 应用程序,那么可以,客户端应用程序只需要一个 JavaScript 库。您需要的服务器端库取决于您选择的实时技术。

【讨论】:

感谢您的回复。用户活动不是一个真正必要的功能,只是能够根据用户的 GPS 位置将新内容推送到我们的服务器上。基于此,我们提供本地内容。你在说什么框架? 另外,如果 JavaScript 客户端库是 Web 应用程序,它不会覆盖所有平台吗?【参考方案3】:

当用户使用手机的移动浏览器或手机本身(执行非浏览器任务)时,您需要通知吗?在此基础上,可以选择记录用户活动的框架。

【讨论】:

嗨,我也和 Ben 有同样的问题。我需要通知用户手机本身。你推荐哪一个?

以上是关于在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Android手机做为云服务器实操

Android手机做为云服务器实操

是否可以在手机上远程构建和运行Android Studio应用?

python代码怎么在手机上运行

在 .Net Core Web 应用程序中获取移动 GeoLocation

我们如何从 ListView 中进行多选?我看到它可以在桌面上运行,但不能在手机上运行