·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[AS3]P2P聊天室的rtmfp协议源代码示例

时间:2014-05-11 09:369ria.com
[AS3]P2P聊天室的rtmfp协议源代码示例,P2P应用,rtmfp播放器,rtmfp源代码,rtmfp协议

[AS3]P2P聊天室的rtmfp协议源代码示例

  1. package 
  2.     import flash.display.Sprite; 
  3.     import flash.net.NetConnection; 
  4.     import flash.net.NetGroup; 
  5.     import flash.net.GroupSpecifier 
  6.     import flash.events.NetStatusEvent; 
  7.     import flash.events.MouseEvent; 
  8.      
  9.     public class LocalTest extends Sprite 
  10.     { 
  11.         private var nc:NetConnection; 
  12.         private var group:NetGroup; 
  13.         private var userName:String; 
  14.         private var connected:Boolean = false
  15.         public function LocalTest() 
  16.         { 
  17.             connect(); 
  18.         }        
  19.         private function connect():void 
  20.         { 
  21.             trace("connect"); 
  22.             //CuPlayer.com提示:创建网络连接 
  23.             nc = new NetConnection(); 
  24.             //CuPlayer.com提示:添加连接事件侦听 
  25.             nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus); 
  26.             //CuPlayer.com提示:连接地址“rtmfp:” 
  27.             nc.connect("rtmfp:"); 
  28.              
  29.             userName = "user"+Math.round(Math.random()*1000); 
  30.         } 
  31.         private function netStatus(event:NetStatusEvent):void 
  32.         { 
  33.             writeText(event.info.code); 
  34.              
  35.             switch(event.info.code) 
  36.             { 
  37.                 case "NetConnection.Connect.Success": 
  38.                  
  39.                     txtUser.text=userName
  40.  
  41.                     //连接成功,创建需要广播的群组 
  42.                     setupGroup(); 
  43.                      
  44.                     break; 
  45.                  
  46.                 case "NetGroup.Connect.Success": 
  47.                     connected = true
  48.                     send_btn.addEventListener(MouseEvent.CLICK,btnSend_clickHandler) 
  49.                     break; 
  50.                  
  51.                 case "NetGroup.Posting.Notify": 
  52.                     //当获取到群组post群发通知的时候调用相关函数 
  53.                     receiveMessage(event.info.message) 
  54.                     break; 
  55.                  
  56.                 case "NetGroup.Neighbor.Connect": 
  57.                 case "NetGroup.Neighbor.Disconnect": 
  58.                     /*for(var i in event.info) 
  59.                     { 
  60.                         trace([i,event.info[i]]) 
  61.                     }*/ 
  62.                     break; 
  63.             } 
  64.         } 
  65.          
  66.         private function setupGroup():void 
  67.         { 
  68.             /* 
  69.             GroupSpecifier类可以构造一个传递到NetStream和NetGroup的构造函数的加密groupspec字符串。  
  70.             一个groupspec指定一个RTMFP P2P群组,包括功能、限制和成员授权等信息。 
  71.             构造函数中的"myGroup/groupOne"为群组标识,可以随意字符串代替 
  72.             */ 
  73.             var groupspec:GroupSpecifier = new GroupSpecifier("myGroup/groupOne"); 
  74.             //CuPlayer.com提示:设置群组中post群发方式是否可用 
  75.             groupspec.postingEnabled = true
  76.             //指定是否能通过ip多播方式交换更新关于组成员的信息。 
  77.             groupspec.ipMulticastMemberUpdatesEnabled = true
  78.             /* 
  79.             将相关的群组加入某个IP地址并侦听相关的端口 
  80.             Multicast的IP地址需要从不低于224开始,端口需高于1024 ————“224.0.0.0:1024” 
  81.             为保证唯一性,一般设置高一些比较可靠:) 
  82.             */ 
  83.             groupspec.addIPMulticastAddress("225.225.0.1:30303"); 
  84.             //CuPlayer.com提示:在已成功的连接nc上创建一个群组 
  85.             //groupspecWithAuthorizations:返回一个包含授权的加密的groupspec字符串, 传给NetGroup的构造函数。 
  86.             group = new NetGroup(nc,groupspec.groupspecWithAuthorizations()); 
  87.             //CuPlayer.com提示:为群组增加事件侦听 
  88.             group.addEventListener(NetStatusEvent.NET_STATUS,netStatus); 
  89.         } 
  90.          
  91.         private function sendMessage(txt:String):void 
  92.         { 
  93.             //注意,post方法传递的是一个对象Object,由此大家可以方便的在此对象中添加各种需要传递的属性:) 
  94.             var message:Object = new Object(); 
  95.             message.text = txt
  96.             //CuPlayer.com提示:转换一个peerID的群组地址,以适合使用sendToNearest()方法。 
  97.             message.sender = group.convertPeerIDToGroupAddress(nc.nearID); 
  98.             message.userName = txtUser.text; 
  99.              
  100.             group.post(message); 
  101.              
  102.             receiveMessage(message); 
  103.         } 
  104.          
  105.         public function receiveMessage(message:Object):void 
  106.         { 
  107.             writeText(message.userName+": "+message.text); 
  108.         } 
  109.          
  110.         private function writeText(txt:String):void{ 
  111.             txtHistory.appendText(txt+"\n"); 
  112.         } 
  113.          
  114.         protected function btnSend_clickHandler(event:MouseEvent):void 
  115.         { 
  116.             sendMessage( txtMessage.text ); 
  117.             txtMessage.text="" 
  118.         } 
  119.  
  120.     } 

P2P应用,rtmfp播放器,rtmfp源代码,rtmfp协议

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器