[AS3]P2P聊天室的rtmfp协议源代码示例
[AS3]P2P聊天室的rtmfp协议源代码示例,P2P应用,rtmfp播放器,rtmfp源代码,rtmfp协议
[AS3]P2P聊天室的rtmfp协议源代码示例
- package
- {
- import flash.display.Sprite;
- import flash.net.NetConnection;
- import flash.net.NetGroup;
- import flash.net.GroupSpecifier
- import flash.events.NetStatusEvent;
- import flash.events.MouseEvent;
- public class LocalTest extends Sprite
- {
- private var nc:NetConnection;
- private var group:NetGroup;
- private var userName:String;
- private var connected:Boolean = false;
- public function LocalTest()
- {
- connect();
- }
- private function connect():void
- {
- trace("connect");
- //CuPlayer.com提示:创建网络连接
- nc = new NetConnection();
- //CuPlayer.com提示:添加连接事件侦听
- nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
- //CuPlayer.com提示:连接地址“rtmfp:”
- nc.connect("rtmfp:");
- userName = "user"+Math.round(Math.random()*1000);
- }
- private function netStatus(event:NetStatusEvent):void
- {
- writeText(event.info.code);
- switch(event.info.code)
- {
- case "NetConnection.Connect.Success":
- txtUser.text=userName;
- //连接成功,创建需要广播的群组
- setupGroup();
- break;
- case "NetGroup.Connect.Success":
- connected = true;
- send_btn.addEventListener(MouseEvent.CLICK,btnSend_clickHandler)
- break;
- case "NetGroup.Posting.Notify":
- //当获取到群组post群发通知的时候调用相关函数
- receiveMessage(event.info.message)
- break;
- case "NetGroup.Neighbor.Connect":
- case "NetGroup.Neighbor.Disconnect":
- /*for(var i in event.info)
- {
- trace([i,event.info[i]])
- }*/
- break;
- }
- }
- private function setupGroup():void
- {
- /*
- GroupSpecifier类可以构造一个传递到NetStream和NetGroup的构造函数的加密groupspec字符串。
- 一个groupspec指定一个RTMFP P2P群组,包括功能、限制和成员授权等信息。
- 构造函数中的"myGroup/groupOne"为群组标识,可以随意字符串代替
- */
- var groupspec:GroupSpecifier = new GroupSpecifier("myGroup/groupOne");
- //CuPlayer.com提示:设置群组中post群发方式是否可用
- groupspec.postingEnabled = true;
- //指定是否能通过ip多播方式交换更新关于组成员的信息。
- groupspec.ipMulticastMemberUpdatesEnabled = true;
- /*
- 将相关的群组加入某个IP地址并侦听相关的端口
- Multicast的IP地址需要从不低于224开始,端口需高于1024 ————“224.0.0.0:1024”
- 为保证唯一性,一般设置高一些比较可靠:)
- */
- groupspec.addIPMulticastAddress("225.225.0.1:30303");
- //CuPlayer.com提示:在已成功的连接nc上创建一个群组
- //groupspecWithAuthorizations:返回一个包含授权的加密的groupspec字符串, 传给NetGroup的构造函数。
- group = new NetGroup(nc,groupspec.groupspecWithAuthorizations());
- //CuPlayer.com提示:为群组增加事件侦听
- group.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
- }
- private function sendMessage(txt:String):void
- {
- //注意,post方法传递的是一个对象Object,由此大家可以方便的在此对象中添加各种需要传递的属性:)
- var message:Object = new Object();
- message.text = txt;
- //CuPlayer.com提示:转换一个peerID的群组地址,以适合使用sendToNearest()方法。
- message.sender = group.convertPeerIDToGroupAddress(nc.nearID);
- message.userName = txtUser.text;
- group.post(message);
- receiveMessage(message);
- }
- public function receiveMessage(message:Object):void
- {
- writeText(message.userName+": "+message.text);
- }
- private function writeText(txt:String):void{
- txtHistory.appendText(txt+"\n");
- }
- protected function btnSend_clickHandler(event:MouseEvent):void
- {
- sendMessage( txtMessage.text );
- txtMessage.text=""
- }
- }
- }
P2P应用,rtmfp播放器,rtmfp源代码,rtmfp协议
热门文章推荐
- [FMS]Adobe FMS产品(Adobe Flash Media Server)使用介绍(组图)
- [FMS]Flash Media Server之教程附示例代码
- [RTMP]国产RTMP/HLS直播服务器simple-rtmp-server
- [WOWZA]用wowza流媒体服务器发布和播放直播流(RTMP)
- [RTMP]又一款rtmp类的服务器openrtmfp流媒体服务器
- [RTMP]adobe之FMS视频直播解决方案流程介绍(组图)
- [RTMP协议]实时消息传输协议 (RTMP) 常识性介绍
- [FMS]Adobe的Flash Media Server服务器(FMS服务器)安装
请稍候...