使用两个单独的浏览器或计算机,或者为了实验,有两个选项卡,有没有办法将命令从一个页面推送到另一个具有某种侦听器对象的页面?
例如:
controller.html有一个链接,点击后会在viewer.html上触发操作。
这可能吗?
答案 0 :(得分:1)
除非有人打开另一个,并且他们在同一个域上,否则这是不可能的。如果一个 打开了另一个,则可以通过window.opener
与家长进行通信,并通过在执行window.open()
时存储参考来与孩子进行通信。
答案 1 :(得分:1)
您可以通过服务器实现某种消息传递。浏览器/计算机A向服务器发送消息。服务器无法向浏览器/计算机B发送消息,但浏览器可以在服务器上轮询新消息。
答案 2 :(得分:1)
您的第一个限制是您需要两端之间的服务器 - sender.html会向服务器发送AJAX请求,receiver.html会从服务器获取消息。 第二个是HTTP协议不是为了服务器推送,所以除非接收者发起请求,否则服务器不能将消息发送给接收者。
这两种方法是轮询和长期请求。
轮询意味着接收方不断向服务器发送AJAX请求,询问是否有新消息。服务器返回任何新消息,或告诉接收者没有消息准备就绪。这很容易实现,并且非常强大,但是它会产生很大的开销,因为接收器不断触发请求,其中大多数都是冗余的,因为答案是“没有消息可用”。
使用长请求方法,接收方向服务器发送请求,但服务器在新消息到达之前不响应。好处是每条新消息只需要一个请求,但由于请求可能会长时间保持打开状态,因此需要管理大量并发连接,从而给Web服务器带来更多压力。
另一种替代方法是使用某种插件或applet,它可以在当前浏览器上下文之外建立连接。这样的插件可以使用它想要的任何协议,在这方面消除了HTTP的限制,但还有其他限制。
就个人而言,我会选择投票,除非即时回应至关重要。
答案 3 :(得分:1)
在这种情况下,实时推送API会帮助您吗?在大多数情况下,会创建一个频道,当频道内发生事件时,它们会被推送到频道内的任何客户端。
由于我在这里很新,我每个帖子只能分享一个链接。所以我在pastebin上写了一些我知道的实时推送API:http://pastebin.com/QcsAWXXC