flashplayer10.1 p2p NetGroup 简单的聊天示例

本文介绍如何使用FlashPlayer 10.1中的P2P/RTMFP Groups创建一个简单的多人聊天室。通过连接Adobe Stratus服务并利用P2P传输数据,实现用户间实时消息传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇教程讲述的是 Flash Player 10.1中的P2P/RTMFP Groups 的基本用法,我们使用RTMFP来建立一个简单的多人聊天室。所有数据将使用P2P的方式进行传输

 

下载 (19.6 KB)
19 分钟前

这篇教程讲述的是 Flash Player 10.1中的P2P/RTMFP Groups 的基本用法,我们使用RTMFP来建立一个简单的多人聊天室。所有数据将使用P2P的方式进行传输。所以我们要使用最新的(2010-1-22) AdobeStratus - rendezvous service。

注意点:

1.播放器版本:Flash Player 10.1
2.UDP网络通讯允许(注意你的防火墙)
3.工具:Flash Builder 4
4.Stratus开发者密钥,可以去这里申请 https://www.adobe.com/cfusion/entitlement/index.cfm?e=stratus

5.player global.swc for Flash Player 10.1

源文件:http://www.webgamei.com/cache/yuanma/fanli/2010/0210/219.html

第一步:新建一个flex4工程

文件 -> 新建 -> Flex 项目

 在项目属性中引入playerglobal.swc (FP10.1API)

 在flex编译器选项中设置flashplay版本为10.1.0
 

 

第二步:连接Stratus

首先,我们需要建立NetConnection去连接Adobe Stratus。非常简单

  1. private const SERVER:String = "rtmfp://stratus.adobe.com";
  2. private const DEVKEY:String = "YOUR-STRATUS-DEVELOPER-KEY";
  3. private var nc:NetConnection;
  4.  
  5. private function connect():void{
  6.         nc = new NetConnection();
  7.         nc.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
  8.         nc.connect(SERVER+DEVKEY);       
  9. }

第三步:建立NetGroup

我们需要建立P2P group进行连接。GroupSpecifier是一个用来定义group所有参数的类。首先,将它命名为“myGroup/g1”。然后设置 serverChannel与Stratus进行沟通。最后发布。这样,我们就完成了P2P Group的定义。

 

然后,我们必须确定实际的NetGroup。groupspecWithAuthorizations()返回字符串 - 这是一个组标识符。

或许你会问,groupspecWithoutAuthorizations()和groupspecWithAuthorizations()之间有什 么区别。如果你设置了密码,groupspecWithAuthorizations可以发送或组 播,groupspecWithoutAuthorizations只能接收。

  1. private function setupGroup():void{
  2.         var groupspec:GroupSpecifier = new GroupSpecifier("myGroup/g1");
  3.         groupspec.serverChannelEnabled = true;
  4.         groupspec.postingEnabled = true;
  5.  
  6.         netGroup = new NetGroup(nc,groupspec.groupspecWithAuthorizations());
  7.         netGroup.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
  8.  
  9.  
  10.         user = "user"+Math.round(Math.random()*10000);
  11. }

第四步:处理NetStatusEvent

在这里我们将要处理三个事件。当我们连接Stratus的时候我们要设置一个组,当我们连接NetGroup的时候在界面上提示,还有当我们接收到一个消息的时候,在聊天窗上显示它。

  1. private function netStatus(event:NetStatusEvent):void{
  2.         trace(event.info.code);
  3.  
  4.         switch(event.info.code){
  5.                 case "NetConnection.Connect.Success":
  6.                         setupGroup();
  7.                         break;
  8.  
  9.                 case "NetGroup.Connect.Success":
  10.                         connected = true;
  11.  
  12.                         break;
  13.  
  14.                 case "NetGroup.Posting.Notify":
  15.                         receiveMessage(event.info.message);
  16.                         break;
  17.         }
  18. }

第五步:发送和接收信息

 

我们需要自己定制一套消息协议,用来处理文本,用户名,发送人ID。发送人ID直接贴出来。我们也需要为组地址转换NetConnection PeerID。当我们给NetGroup发送消息的时候,我们只是分发/广播它,但不回发给我们自己。这就是为什么我们需调用receiveMessage,以及在聊天窗上显示。

  1. private function sendMessage():void{
  2.         var message:Object = new Object();
  3.         message.sender = netGroup.convertPeerIDToGroupAddress(nc.nearID);
  4.         message.user = txtUser.text;
  5.         message.text = txtMessage.text;
  6.  
  7.  
  8.         netGroup.post(message);
  9.         receiveMessage(message);
  10.  
  11.         txtMessage.text = "";
  12. }
  13.  
  14. private function receiveMessage(message:Object):void{
  15.         write(message.user+": "+message.text);
  16. }
  17.  
  18. private function write(txt:String):void{
  19.         txtHistory.text += txt+"/n";
  20. }

第六步:建立界面

  1. <s:TextArea left="10" right="10" top="10" bottom="40" id="txtHistory"/>
  2. <s:TextInput x="10" id="txtUser" text="{user}" bottom="10"/>
  3. <s:TextInput left="145" right="88" id="txtMessage" bottom="10" enter="sendMessage()"/>
  4. <s:Button label="Send" click="sendMessage()" enabled="{connected}" bottom="10" right="10"/>

第七步:运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值