使用WebSocket在Android上获取JSON是否合适



我正在Android上开发客户端应用程序,它使用REST API来获取JSON。应用程序将大量请求发送到不同的 URL。这种方式有点慢 - 需要30~60秒。这篇文章说WebSocket工作得更快。现在我想知道我是否可以为此目的使用 WebSocket s。所以我对此有几个问题:

  1. 使用WebSocket从服务器获取 JSON 数据是否是一种好的做法?如果没有,还有什么比常规HTTP更好(更快/更安全)的呢?
  2. 我可以使用WebSocket向常规 HTTP REST API 发送请求吗?(这个问题可能看起来很奇怪,但我真的不知道)?或者伙计们后端应该更改/修改某些内容以使其启用?
  3. 使用WebSocket有什么缺点(例如电池耗尽)?
  1. 可以使用 WebSocket 从服务器获取 JSON 数据。 但是,客户端和服务器都必须"对话"WebSocket。 如果服务器只能理解 REST 调用,您将无法从浏览器直接连接到该 REST 服务器。

  2. 不可以,您不能使用 WebSocket 直接连接到 HTTP REST API。 您的浏览器必须使用与服务器相同的协议。 这就是发明协议的原因。右? :)

  3. WebSocket 是客户端和服务器之间的持久连接。 它就像TCP套接字连接一样。 HTTP基本上不是持久的(尽管有一些技巧可以长时间保持连接)。 HTTP 客户端通常调用 HTTP 服务器,获取数据,返回,然后终止连接。 两者都有优点和缺点(就像其他任何东西一样)。 WebSocket 连接本身不会很快耗尽智能手机电池电量。 如果您不断通过必须由 GPU 在屏幕上呈现的 WebSocket 发送数据,那么您的电池将耗尽。 HTTP连接本身也不会耗尽智能手机电池。 但是,如果您的手机正在轮询某个 REST 服务器并且处于低带宽区域,则电池将从不断从低功耗模式切换到高功率模式而耗尽。 因此,影响电池的不是连接;它与影响电池的连接发生了什么。

  1. 您仍然发送 HTTP 请求。如果您有一堆想要发送突发或想要与服务器进行双向交互,则是一种很好的做法。您只需避免每次都重建新的会话和多个握手协议。如果您想访问包含大量资源(例如图像)的网页,这是一个好主意。此外,服务器可以在不轮询的情况下向您发送请求。
  2. WebSocket 需要在服务器端启用(默认情况下是这样),但为了保持连接活动,Web 服务器会存储一些需要管理的引用。因此,即使没有消息传递,也可以分配资源。当您有很多客户端时,处理资源分配可能会变得具有挑战性。
  3. 电池耗尽不是问题,因为您不会发送大量数据,但对于您作为开发人员,您需要添加额外的逻辑来处理网络或 wifi 不再可用的情况。这是 Websocket 终止时,您需要重新连接服务器。

作为个人评论:如果您需要服务器与您交互(如果发生某些事情,例如服务器有新消息到达您,服务器可以使用 websocket 通知您),或者如果您期望在短时间内从客户端向服务器发送大量请求,请使用它。

希望对您有所帮助!我不是专家。

相关内容

  • 没有找到相关文章

最新更新