2016-10-13 00:16:48 点击量:40 标签: 收藏本文
[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协议
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室