当站点在 2 浏览器中打开时,as3 LocalConnection 通信停止工作 windows

as3 LocalConnection communication stops working when site is open in2 browser windows

我想我发现了 LocalConnection 通信设置的 flash 错误,如此处所述。下面的网站不是我的,我只是用它来证明其他网站也有这个问题:

重现方式:

http://fcontheweb.com/articles/localconnection/

如果您在 2 个浏览器中打开站点 windows,找到在 2 个 as3 组件之间发送消息的 as3 示例。

在第一个浏览器中点击按钮window:会在本地与消息框进行通信。如果您随后在第二个浏览器 window 上按下按钮,则什么也不会发生。如果关闭第一个浏览器 window,则必须在第二个 window.

开始工作之前刷新页面

我认为这是因为两个windows中as3对象的命名空间在浏览器的flash player插件中重叠,通信通道link正在被覆盖。

您可以通过再次打开 2 windows 轻松验证我的假设,但现在先按 LAST window 中的按钮。 window 中不会发生任何事情,但消息会显示在第一个 window 中!不知何故,最后一页的接收者没有被创建,因为同名的接收者已经存在于 flash 插件的对象存储中。

您能否证实这一点,更有趣的是,有人对此有解决方法吗?是否可以检测本地有多少 swf 实例 运行 并将其用于连接名称?

编辑:观察到的行为不是错误,而是预期的行为。但是我的问题仍然存在:如何让同一浏览器 window 中的页面使用 LocalConnection 独立于同一系统上不同浏览器 window 中的相同页面进行通信。

您问题中提到的行为是正常行为,不是错误。

要理解为什么,请将您的 2 打开 windows 视为 2 windows,其中每个包含一个客户端和一个服务器,并且您的两个服务器将侦听相同的端口 PORT ,并且您的两个客户端都将连接到本地计算机中的该端口。因此,当您启动第一个 window 时,服务器将开始侦听来自 PORT 上客户端的连接,第二个服务器将不会启动,因为端口 PORT 已被占用,因此第一个服务器将接收所有客户端连接。

关于检测本地有多少 swf 实例 运行 的第二个问题,您可以简单地使用 SharedObject.

希望能帮到你。