2

我正在构建一个原型,其中一页 AI 有一个控制器。想象一个电视遥控器。在另一个页面 B 上,与表单 A 无关——它可以是不同的屏幕/计算机——其中一些元素 X、Y 和 Z 将由页面 A 上的遥控器进行动画处理。

我的第一个想法是:

  • 页面 A 上的远程保存所需的操作并发送 JSON。
  • 我在页面 B 上创建了一个侦听器,它读取 JSON 以侦听要触发的操作。

我想知道这是否是正确的方向。

它只是一个原型,所以它不一定是一个生产完美的想法。

4

5 回答 5

2

您可以为此使用网络套接字

于 2012-05-24T05:30:59.223 回答
1

假设您使用 2 台计算机,都指向网站,因为这种技术在这两种情况下都适用。

如果它只是一个原型,你可以让你的页面 B 每 5 秒轮询一次服务器以查找页面 A 提交的更新。

然而,实际上,对于拥有数千名用户的生产应用程序,这可能会消耗大量带宽并给您的服务器带来沉重的负载。为了补偿负载和带宽使用,您可以将轮询速率提高到 10 秒或 30 秒,但是为了响应此更改,您的用户在等待浏览器从服务器请求更新时会遇到延迟。

在生产应用程序中,许多开发人员正在转向 Comet 作为解决方案。Comet 基本上是 Alex Russell 给出的一个术语,指的是一种涉及使用请求/响应周期来模拟服务器推送的技术。

一般的想法是浏览器向服务器发出请求,服务器无限期地保持该连接打开。连接保持打开状态,直到另一个用户向服务器发布更新,在这种情况下,服务器然后向连接的用户发送响应。

Dojo 和 Jetty 团队进行了演示,他们表明在使用延续时,这种技术可以扩展到 20,000 个连接。

虽然我认为您可以使用数据库和/或一些会话变量很好地进行实验,但如果您想了解更多关于 PHP 上的 Comet 的信息,请查看如何使用 PHP 实现 Comet。祝你好运!

更新:

我还想说,对于如何从概念上考虑使用 JSON 传递的消息,您绝对有正确的想法:

  • 我在页面 B 上创建了一个侦听器,它读取 JSON 以侦听要触发的操作。

我真的很喜欢你如何考虑传递一条消息,然后告诉页面要触发什么操作。如果您考虑一下,您可以重用您的消息传递概念来调用其他命令,这样您就可以避免在需要调用的新命令出现时重新发明轮子。无论您是轮询、使用 Comet 还是使用 WebSockets,考虑抽象和通用、可重用的数据传输都是一个好主意。

于 2012-05-24T05:38:13.023 回答
0

您可以通过轮询(让页面 B 不断轮询来自服务器的更新)或使用服务器推送技术(如服务器发送的事件或 websockets)来做到这一点。

于 2012-05-24T05:33:30.107 回答
0

使用 cron 作业每 x 单位时间执行页面 B 将使您检查页面 A 中任何最新更新的 json(根据您的逻辑查询/返回的输出)。这样,您可以使用页面 A 中的新更新 json 并执行您的进一步的任务...

于 2012-05-24T05:44:49.523 回答
0

是的,那会奏效。您也可以像制作矢量线动画一样制作它。将移动的“命令”发送到服务器并记录它们(在数据库、文件等中),然后客户端程序可以随时随地请求和重绘移动。

于 2012-05-24T05:34:53.323 回答