将信息从服务器发送到客户端

时间:2014-04-01 20:11:50

标签: html5 request html5-apps

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

说明:我想将服务器中的数据发送给下载 HTML5 应用程序的客户。

但我不知道怎么做。我知道我可以从客户端发送一个php请求到服务器然后回答,但我怎么能从服务器发送一些东西没有客户端询问它。

感谢。

2 个答案:

答案 0 :(得分:0)

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

这些技术允许客户端Web应用程序随时保持对来自服务器的通信开放。 Server-Sent事件是服务器到客户端,而WebSockets可用于双向通信。

答案 1 :(得分:0)

添加到笑话的答案......

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

  • 某种形式的民意调查,长期民意调查,彗星等。
  • 的WebSocket

第一种选择可以更好地理解,因为这些技术已经存在了很长时间。

WebSocket是更新的,但它是更好的解决方案,因为它减轻了基于HTTP的技术的问题,包括轮询,长轮询等。对于小型应用程序或不经常轮询的应用程序,您可以逃脱轮询。但是当你想扩展时,这些解决方案会遇到问题。

我不打扰SSE(服务器发送事件),因为它几乎是WebSocket的一个子集。任何考虑SSE的人通常最终只使用WebSocket,因为它涉及相同数量的工作并且它会给你更多(例如双向交互)。

然而,WebSocket并不能取代HTTP;应用程序可以同时使用它们。使用正确的工具来完成正确的工作。

在您的情况下,让客户端具有WebSocket连接。然后你的后端应用程序可以随时(异步)通知客户端有任何事情可做(例如,你可以在你原来的帖子中说出新的歌曲或图像)。

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

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

这是使用HTTP和WebSocket的优势的一个例子。 WebSocket实现了高效的异步交互,几乎没有带宽消耗,而HTTP则可以有效地获取静态资源。