0

我想我在LocalConnection通信设置中发现了一个 flash 错误,如此处所述。下面的站点不是我的,我只是用它来表明问题也发生在其他站点上:

如何重现:

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

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

单击第一个浏览器窗口中的按钮:它将与消息框进行本地通信。如果您随后按下第二个浏览器窗口上的按钮,则不会发生任何事情。如果关闭第一个浏览器窗口,则必须在第二个窗口开始工作之前刷新页面。

我认为这是因为两个窗口中的 as3 对象的命名空间在浏览器的 flash 播放器插件中重叠,并且正在覆盖通信通道链接。

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

您能否确认这一点,更有趣的是,是否有人对此有解决方法?是否可以检测本地运行的 swf 实例数量并将其用作连接名称?

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

4

1 回答 1

2

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

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

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

希望能有所帮助。

于 2015-09-08T00:02:45.663 回答