我正在构建一个原型,在一个页面A我有一个控制器。想象一下电视遥控器。在另一页B上,独立于表格A - 它可以是不同的屏幕/计算机 - 一些元素X,Y和Z将由A页面上的遥控器进行动画处理。
我的第一个想法是:
我想知道这是否正确。
它只是一个原型,所以它不一定是一个完美的生产理念。
答案 0 :(得分:2)
您可以使用web sockets。
答案 1 :(得分:1)
我们假设您使用的是两台指向网站的计算机,因为这种技术可以在两种情况下都有效。
如果它只是一个原型,你可以让你的页面B每5秒轮询一次服务器,以查找第A页提交的更新。
然而,实际上,对于拥有数千名用户的生产应用程序,这可能会占用大量带宽并对您的服务器造成沉重负担。为了补偿负载和带宽使用,您可以将轮询速率提高到10秒或30秒,但是为了响应此更改,您的用户在等待浏览器从服务器请求更新时会遇到延迟。
在生产应用程序中,许多开发人员都将Comet作为解决方案。 Comet基本上是Alex Russell给出的一项术语,涉及使用请求/响应周期来模拟服务器推送。
一般的想法是浏览器向服务器发出请求,服务器保持该连接无限期打开。连接保持打开,直到另一个用户向服务器发布更新,在这种情况下,服务器然后向连接的用户发送响应。
Dojo和Jetty团队进行了演示,他们表明这种技术在使用延续时可以扩展到20,000个连接。
虽然我认为您可以使用数据库和/或某些会话变量来完成您的实验,但如果您想了解有关PHP上的Comet的更多信息,请查看How to Implement Comet with PHP。祝你好运!
<强>更新强>
我还想说你肯定对于如何从概念上考虑使用JSON传递的消息有正确的想法:
- 我在页面B上创建了一个侦听器,该侦听器读取JSON以侦听要触发的操作。
我真的很喜欢你如何考虑传递消息然后告诉页面触发什么动作。如果你考虑一下,你可以重用你的消息传递概念来调用其他命令,这样你就可以避免在需要调用新命令时重新发明轮子。无论您是民意调查,使用Comet还是使用WebSockets,考虑抽象和通用,可重复使用的数据传输都是一个好主意。
答案 2 :(得分:0)
您可以通过轮询(让B页不断轮询来自服务器的更新)或使用服务器推送技术(如服务器发送事件或websockets)来执行此操作。
答案 3 :(得分:0)
是的,那会有用。你也可以像制作矢量线动画一样。发送“命令”以便移动到服务器并记录它们(在数据库,文件中,无论如何),然后客户端程序可以随时随地请求并平滑地重绘运动。
答案 4 :(得分:0)
使用cron作业每x单位时间执行一次页面B将使您从页面A检查任何最新更新的json(根据您的逻辑查询/返回的输出)。这样,您可以使用来自页面A的新更新的json并做你的进一步任务......