18.3.基于本地连接通信的有效性验证

问题
我想知道发送的数据是否被接收端顺利收到
解决办法
设置接收端发送确认信息给发送端
讨论
要确认信息是否被收到,需要在接收端返回给发送端一条确认信息,为了验证信息是否被收到,可以在接收端发送一条确认消息给发送端。由于本地连接自身的限制,一个通道不能用于双向通信,因此需要各自建立一条通道互不干扰,具体步骤如下:
1.
接收端和发送端的代码请看第18.1章.
2.
在接收端通过新的通道"_exampleChannelReceipt "发送确认信息,使用this.send( )方法把信
息发送给原始发送端。
3.
在发送端调用connect( )方法建立新通道"_exampleChannelReceipt"用于接收信息。.
4.
在发送端创建处理方法接受信息。

下面是发送端和接收端代码片断:

首先是接收端代码,使用DynamicLocalConnection类:
+展开
-ActionScript
// 创建接受代码监听"_exampleChannel" 通道
var receiver:DynamicLocalConnection = new DynamicLocalConnection( );
receiver.connect( "_exampleChannel" );
receiver.example = function( ):void {
this.send( "_exampleChannelReceipt""receipt" );
};

发送端代码:
+展开
-ActionScript
var sender:DynamicLocalConnection = new DynamicLocalConnection( );
seder.send( "_exampleChannel""example" );
// 监听"_exampleChannelReceipt" 通道
sender.connect( "_exampleChannelReceipt" );
// 定义receipt( )方法接收返回信息
sender.receipt = function( ):void {
output.text = "Receiver has delivered sent receipt";
};

在进一步改进代码,实际上接收端事先可以不知道返回信息的通道,可以让发送端告诉接收端通道名称是什么,这样做对于多个发送端和一个接收端时很有用,看下面的例子:
+展开
-ActionScript
sender.send( "_exampleChannel""example""_exampleChannelReceipt1" );

发送端告诉接收端自己的接收通道是什么,接收端再根据这个通道名称发送确认信息给发送端:
+展开
-ActionScript
receiver.example = function( receiptChannelName:String ):void {
this.send( receiptChannelName, "receipt" );
}

这样做使程序更具有灵活性。

加支付宝好友偷能量挖...


评论(0)网络
阅读(91)喜欢(0)flash/flex/fcs/AIR