1

有人可以建议 Air(Action script) App 和 node.js 服务器之间的通信方式吗?

例如

  1. 使用 AMFPHP 在 PHP 和 Flash(Action Script) 应用程序之间进行通信

  2. 适用于 Java+Adobe Flex 和 Adob​​e Integrated Runtime (AIR) 的 BlazeDS

请将您的建议、任何教程或 PoC 示例代码发送给我

提前致谢。

4

1 回答 1

3

这是我为博客编写的示例。我认为代码本身几乎可以解释自己。


客户端 AS3 代码:

var urlString:String = "http://localhost:1337/"; 

function Submit():void
{
    var requestVars:URLVariables = new URLVariables();
    requestVars.Username = "guest";

    var request:URLRequest = new URLRequest();
    request.url = urlString;
    request.method = URLRequestMethod.GET;
    request.data = requestVars;

    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.TEXT;
    loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);

    try { loader.load(request); }

    catch (error:Error) { // Handle Immediate Errors }
}

function loaderCompleteHandler(e:Event):void
{
    trace(e.target.data); // Response Text
}

关于代码片段的简要说明:

  • 我们通过将 URLVariables 类实例化为 requestVars来填充请求数据。
  • 我们通过将 URLRequest 类实例化为request来填充 url & 方法。
  • 我们附加一个加载完成事件处理程序来处理响应。
  • 结束捕获错误,我们调用 load 方法。
  • URL 设置为将托管 nodeJS 的 Localhost 端口 1337。

  • 变量集是在服务器脚本中检查的测试字段 UserName。


服务器端 NodeJS 代码:

var http = require('http'), url = require('url');

http.createServer(function (req, res) {

  res.writeHead(200, {'Content-Type': 'text/plain'});

  var urlObj = url.parse(req.url, true);

  if(urlObj.query["Username"] == "guest") res.end("True");    

  else res.end("False");    

}).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

关于代码片段的简要说明:

  • 该代码在托管它的 localhost 服务器中的端口 1337 处进行侦听。
  • 查询字符串被解包以获取 UserName 变量并进行测试。
  • 服务器以true响应,因为该值等于guest
于 2012-04-26T11:56:19.923 回答