如何在不同计算机上的用户之间共享网站上的实时更新


How to share real time updates on a website between users on different computers?

我正在尝试找出一种方法,让网站用户(例如学生和老师(共享安全连接,其中他们都可以查看一个页面上的实时更新。从研究中,我得出结论,一些实时更新可以使用ajax和javascript执行。

但是我对用户如何共享一个连接感到困惑,其中只有两个用户将查看网站上发生的更新(例如绘图板的Flash动画(。我也很困惑你怎么会开始建立这样的连接。

我已经查看了intp php会话和cookie,但我不确定我是否在做正确的研究。有关两个特定用户如何共享安全连接的任何指针,其中实时更新仅由他们两个查看。我不想得到简短的回应。我正在寻找特定于 php 的函数和语法等特定细节。我很感激你的帮助,如果你给我好的答案,我会给你评分!

您不能共享一个客户端到一个服务器的安全连接(例如HTTPS(。

如果两个客户端都已登录并在浏览器中运行后台 AJAX 任务,是否可以让每个客户端每隔几秒钟"提取"相同的数据以显示给两个用户?

这将要求"绘图板"更新也不断发送回服务器,以与其他客户端共享更新的数据。我相信会有一个事件可以用来触发数据发布(例如,在鼠标向上时(。

如果性能是一个问题,您可能希望使用更好的服务器技术,例如 Java,它能够在请求之间保持会话状态,而不必持久保存到数据库中。

你可以看看ajax推送技术。我曾经使用过彗星,管理员发布了消息,每个登录的人都会看到该消息出现在他们的屏幕上。我不知道彗星是否支持PHP。我只在JSP中使用了它。只需在Google中搜索"ajax push"。

Flash允许用户之间的连接,我认为他们将它们称为套接字。
如果你想使用 Ajax 等,你需要一个支持推送的服务器端技术。
Node 是这方面的标准,您可以免费设置 Heroku 实例。

还有其他的,你需要在开始学习应用之前学习工具。

在众多概述中,您可能会对此感兴趣:
http://arstechnica.com/business/2012/05/say-hello-to-the-real-real-time-web/?1

发生这种情况

的一些很好的例子:

  • 谷歌文档
  • 以太网垫
  • HTML5游戏:多人游戏

您可以使用的技术(具有不同的浏览器支持(

  • HTML5 WebSockets(维基百科;MDN;HTML5 演示(
  • 彗星(维基百科(

据我所知,真正将数据从服务器推送到 Web 浏览器客户端(当它从另一个客户端接收到某些内容时会这样做(只有 WebSockets 才有可能。其他机制要么需要浏览器插件,要么需要独立的应用程序。

但是,使用 Comet(通过 AJAX(,您可以通过定期轮询服务器以获取数据来真正接近推送数据。然而,与传统轮询(例如,客户端每5秒请求一次数据(相反,使用Comet原则,服务器将把该定期请求作为人质,例如长达30秒。服务器在有数据或达到超时之前不会发回数据。这样,在这 30 秒内,服务器接收的任何数据都可以立即推送回其他客户端。紧接着,客户端开始一个新的 30 秒会话,依此类推。

尽管Comet和WebSockets都应该与Apache提供的PHP后端一起工作。我建议为此研究NodeJS(作为服务器技术(。

互联网上有很多关于彗星的信息,我建议你谷歌一下,也许从维基百科开始。

彗星的伟大之处在于,它与其说是一种技术,不如说是一种原理。它使用我们已经拥有的东西(使用 AJAX 的简单 HTTP 请求(,因此浏览器支持非常广泛。

您还可以进行组合,其中使用套接字(如果支持(并回退到 Comet。

我相信

你已经研究过了。认为这可以通过ajax完成的观点是误导性的,认为网站的两个用户可以通过javascript进行通信。

如您所知,javascript发生在客户端上,ajax本质上是"在不更改或刷新页面的情况下与服务器对话"。

网站两个用户之间的通信必须通过服务器 - php 和一些选定的数据存储进行。

希望不是简短的。干杯,罗伯