有人可以建议Air(Action script)应用程序和node.js服务器之间进行通信的方法吗?
例如
使用 AMFPHP 在 PHP 和 Flash( ActionScript )应用程序之间进行通信
BlazeDS for Java+Adobe Flex 和 Adobe Integrated Runtime (AIR)
请将您的建议、任何教程或 PoC 示例代码发送给我
提前致谢。
最佳答案
这是我为博客编写的示例。我认为代码本身已经很好地解释了。
<小时/> 客户端 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 类来填充请求数据: 请求变量。
- 我们通过将 URLRequest 类实例化为 request 来填写 URL 和方法。
- 我们附加一个加载完成事件处理程序来处理响应。
- 为了捕获错误,我们调用了 load 方法。
URL 设置为托管 NodeJS 的本地主机端口 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/');
代码片段简介:
- 该代码监听托管它的本地主机服务器的端口 1337。
- 解包查询字符串以获取 UserName 变量并进行测试。
- 服务器响应 true,因为该值等于guest。
关于actionscript-3 - 如何在 Air Action Script 应用程序和 Node.js 服务器之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10332567/