0

我正在寻找一种将信息从服务器发送到客户端的方法,例如歌曲或图像。

解释 :我想从我的服务器向下载HTML5应用程序的客户端发送数据。

但我不知道怎么做。我知道我可以从客户端向服务器发送一个 php 请求,然后再回答,但是我怎么能在没有客户端询问的情况下从服务器发送一些东西。

谢谢。

4

2 回答 2

0

添加到jokeyrhyme的答案......

您希望将数据从服务器异步发送到客户端。这意味着客户端不知道何时期望数据。实际上,在当今的 Web 上,您有以下选择:

  • 某种形式的轮询、长轮询、彗星等。
  • 网络套接字

第一个选项更好理解,因为这些技术已经存在了很长时间。

WebSocket 较新,但它是更好的解决方案,因为它通过轮询、长轮询等缓解了困扰基于 HTTP 的技术的问题。对于小型应用程序或不经常轮询的应用程序,您可以摆脱轮询。但是,当您想要扩展时,这些解决方案就会遇到问题。

我不会为 SSE(服务器发送事件)而烦恼,因为它几乎是 WebSocket 的一个子集。任何考虑 SSE 的人通常最终只使用 WebSocket,因为它的工作量大致相同,而且它为您提供了更多(例如双向交互)。

然而 WebSocket 并没有取代 HTTP;一个应用程序可以同时使用两者。为正确的工作使用正确的工具。

在您的情况下,有一个带有 WebSocket 连接的客户端。然后您的后端应用程序可以随时(异步)通知客户端有事情要做(例如,有新歌曲或图像可用,正如您在原始帖子中所说)。

我不会费心通过 WebSocket 连接发送歌曲或图像,尽管你可以。相反,客户端可以使用传统的 HTTP 技术来获取歌曲或图像,这些技术很好理解并且擅长处理静态内容。例如,如果多人下载同一个(歌曲或图像)文件,您可以利用缓存。

因此,通过 WebSocket 将要下载的歌曲/图像的 id 或 URL 发送到客户端。然后通过 HTTP 获取歌曲/图像。

这是同时使用 HTTP 和 WebSocket 的一个例子。WebSocket 用于高效的异步交互,几乎没有带宽消耗,HTTP 用于高效地获取静态资源。

于 2014-06-06T16:54:41.507 回答
0

您可能想尝试服务器发送事件或 WebSockets:

这些技术允许客户端 Web 应用程序随时保持对来自服务器的通信开放。服务器发送事件专门用于服务器到客户端,而 WebSocket 可用于双向通信。

于 2014-06-06T12:07:26.753 回答