javascript - 使用 JavaScript/ActionScript 监视来自同一域的浏览器窗口

标签 javascript flash actionscript

我的网页加载了一个后台闪存,它将使用套接字连接到服务器。 如果用户打开我网站的多个窗口/选项卡,服务器将获得多个套接字连接。知道如何确保同一用户和同一浏览器仅连接一个套接字吗?

我正在考虑使用Javascript来监 window 口关闭事件,如果连接到服务器的窗口被关闭,其他窗口之一将尝试连接到服务器。但我找不到监听该事件的方法。

我也在考虑 Flash 的 LocalConnection,但找不到分配唯一连接名称并让其他 Flash 知道的方法。

最佳答案

您可以使用 LocalConnection 在 Flash 中完成此操作。

当电影加载时,尝试向某个 LocalConnection ID 发送测试消息。如果失败,则连接未打开,在这种情况下,您打开它来监听命令,然后通过套接字连接到服务器。

如果成功,则说明已经有一个连接到服务器的 SWF 正在运行。您可以将 SWF 通过 LocalConnection 获取的任何服务器请求发送到连接到服务器的请求。

如果您需要获取响应,则可能需要让其他 SWF 打开自己的本地连接(随机 ID),并将它们注册到连接到服务器的 SWF。

当连接的 SWF 关闭(窗口关闭)时,所有发送到该 LocalConnection 的操作都会失败。在这种情况下,您的其他 SWF 将开始出现错误。其中一个必须打开该连接并成为“主”SWF(第一个成功打开连接的)。

生命周期会有点奇怪,并且您可能需要处理很多极端情况以确保它保持健壮,但这是一种选择。但是,我注意到随着连接数量的增加,LocalConnection 可能会变得不可靠,因此您最好寻找不同的解决方案。

关于javascript - 使用 JavaScript/ActionScript 监视来自同一域的浏览器窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031662/

相关文章:

javascript 变量未正确分配

javascript - this.$refs 指向类样式组件中的一个 vue 组件

javascript - SetVariable 在 FireFox 中有效,但在 Internet Explorer 中无效?

apache-flex - Stagewebview 无法在 IOS 设备中重新选择文本内容 - Flex 4.6

flash - 我可以从 ExternalInterface.call() 方法调用匿名函数吗?

javascript - 在 MVC 4 上使用 FineUploader 手动触发上传

javascript - 如何访问弹出窗口生成的弹出窗口?

flash - 使对象对Flash中的声音使用react

java - 读取本地文件而不打开对话框(在浏览器中)

apache-flex - Adobe Flex/Actionscript 事件处理顺序