位置:首页 > 综合教程 > Adobe AIR本地连接设置与网络通信配置

Adobe AIR本地连接设置与网络通信配置

时间:2026-06-04  |  作者:318050  |  阅读:0

在同一台电脑上,实现 Adobe AIR 应用不同实例之间的即时消息互通。关键就在于正确配置 LocalConnection 对象的发送端与监听端。

如果忽略了域隔离或命名冲突,连接就会静默失败。先记住这个结论,接下来一步一步拆解。

Adobe AIR怎么设置本地连接?Adobe AIR本地网络通信配置

创建并初始化 LocalConnection 对象

发送端和接收端各需新建一个 LocalConnection 实例。二者必须使用完全一致的连接名称字符串——且不能含空格或特殊符号

代码示范如下:

发送端:var sender:LocalConnection = new LocalConnection();

接收端:var receiver:LocalConnection = new LocalConnection();

这一步操作本身不复杂。但有一个容易被忽略的陷阱——连接名称必须全小写、无下划线、纯字母数字组合(例如 "conn123")。否则在某些 AIR 版本中会静默失败,连报错提示都不会有。

设置接收端监听

接收端需要调用 connect() 方法启动监听,并绑定回调函数来处理接收到的消息。看这段代码:

receiver.client = {onMessage: function(data:String):void { trace("收到:" + data); }};
receiver.connect("conn123");

如果 connect() 返回 false,说明该名称已被其他 LocalConnection 占用——此时必须更换名称重新尝试。

需要警惕的是,不可重复调用 connect() 去覆盖已有监听,否则会引发 SecurityError 异常。

从发送端发起通信

发送端调用 send() 方法向指定名称的监听端传送数据。支持的数据类型包括:

  • String
  • Number
  • Boolean
  • Object(但不含函数或引用)

示例如下:

sender.send("conn123", "onMessage", "Hello from AIR!");

注意 send() 的三个参数含义:

  • 第一个参数:监听端注册的连接名
  • 第二个参数:监听端 client 对象上定义的函数名
  • 从第三个参数开始:实际要传递的数据

这里有个容易踩的坑:如果监听端尚未就绪或名称不匹配,send() 不会报错,但消息会石沉大海。

跨域通信的权限控制

默认情况下,LocalConnection 只允许同域(即同一个 AIR 应用包或同源 SWF)之间通信。如果需要跨域——比如浏览器里的 SWF 与 AIR 应用互通——那么监听端必须显式调用 allowDomain() 方法。

有三种常见配置方式:

  • 方法一:允许特定域名
    receiver.allowDomain("localhost");
  • 方法二:允许全部域(仅限调试环境)
    receiver.allowDomain("*");
  • 方法三:允许当前应用所在域的所有子域
    receiver.allowDomain(".example.com");

注意allowDomain() 必须在 connect() 之前调用,否则不生效。

生产环境中严禁使用 "*" 通配符——一旦放开,任何网页都能向你的 AIR 应用发送指令,后果可想而知。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多