Guest User

Untitled

a guest
Sep 24th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import flash.display.BitmapData;
  4.     import flash.display.Graphics;
  5.     import flash.display.Sprite;
  6.     import flash.events.Event;
  7.     import flash.events.EventDispatcher;
  8.     import flash.events.NetStatusEvent;
  9.     import flash.media.Camera;
  10.     import flash.net.*;
  11.     import flash.text.TextField;
  12.     import flash.utils.ByteArray;
  13.    
  14.     import flashx.textLayout.formats.Direction;
  15.    
  16.  
  17.     public class Connection extends EventDispatcher
  18.     {
  19.         //STATUS CODES
  20.         public static const NET_CONNECTION_CONNECT:String = "NetConnection.Connect.Success";
  21.         public static const NET_GROUP_CONNECT:String = "NetGroup.Connect.Success";
  22.         public static const NET_GROUP_NEIGHTBOUR_CONNECTED:String = "NetGroup.Neighbor.Connect";
  23.         public static const NET_GROUP_NEIGHTBOUR_DISCONNECTED:String = "NetGroup.Neighbor.Disconnect";
  24.         //
  25.        
  26.         private static var instance:Connection;
  27.         private var roomName:String;
  28.        
  29.         private const SERVER:String = "rtmfp://p2p.rtmfp.net/";
  30.         private const DEVKEY:String = "8ac640a494d65ff539848fe6-5e0b20063ccd";
  31.        
  32.         private var netConnection:NetConnection;
  33.         private var groupSpecifier:GroupSpecifier;
  34.        
  35.         private var netGroup:NetGroup;
  36.         private var sendStream:NetStream;
  37.  
  38.         private var userID:String;
  39.         public var logger:TextField;
  40.  
  41.         private var camera:Camera;
  42.        
  43.         public static function getInstance():Connection
  44.         {
  45.             if(instance == null)
  46.                 instance = new Connection();
  47.            
  48.             return instance;
  49.         }
  50.        
  51.         public static function removeInstance():void
  52.         {
  53.             Connection.getInstance().netConnection.close();
  54.             Connection.instance = null;
  55.         }
  56.        
  57.         public function Connection()
  58.         {
  59.  
  60.         }
  61.        
  62.         public function connect(room:String):void
  63.         {
  64.             netConnection = new NetConnection();
  65.             netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  66.             netConnection.connect(SERVER + DEVKEY);
  67.             this.roomName = room;
  68.         }
  69.        
  70.         private function netStatusHandler(event:NetStatusEvent):void
  71.         {
  72.             logger.text += event.info.code + "\n";
  73.             switch(event.info.code)
  74.             {
  75.                 case "NetConnection.Connect.Success":
  76.                     userID = netConnection.nearID;
  77.                     logger.text += "myID: " + netConnection.nearID + "\n";
  78.                     setupGroup();
  79.                     //EVENT
  80.                     doEvent(Connection.NET_CONNECTION_CONNECT);            
  81.                     break;
  82.                 case "NetGroup.Connect.Success":
  83.  
  84.                     //startPublishing();
  85.                     //EVENT
  86.                     doEvent(Connection.NET_GROUP_CONNECT); 
  87.                     break;
  88.                
  89.                 case "NetGroup.Posting.Notify":
  90.                    
  91.                     break;
  92.                
  93.                 case "NetGroup.Neighbor.Connect":
  94.                     logger.text += event.info.peerID + "\n";
  95.                    
  96.                     sendUserInfo();
  97.                     doEvent(Connection.NET_GROUP_NEIGHTBOUR_CONNECTED);
  98.                     break;
  99.                
  100.                 case "NetGroup.Neighbor.Disconnect":
  101.                     doEvent(Connection.NET_GROUP_NEIGHTBOUR_DISCONNECTED); 
  102.                     break;
  103.             }
  104.         }
  105.        
  106.    
  107.         public function startPublishing():void
  108.         {
  109.             logger.appendText("START PUBLISHING\n");
  110.             sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
  111.             sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  112.            
  113.             sendStream.client = this;
  114.             sendStream.attachCamera(camera);
  115.             sendStream.publish(userID);
  116.         }
  117.          
  118.         private function sendUserInfo():void
  119.         {
  120.             var o:Object = new Object();
  121.             o.id = userID;
  122.             o.type = "streamer";
  123.  
  124.             netGroup.post(o);
  125.         }
  126.        
  127.         private function setupGroup():void
  128.         {
  129.             groupSpecifier = new GroupSpecifier(this.roomName);
  130.             groupSpecifier.postingEnabled = true;
  131.             groupSpecifier.serverChannelEnabled = true;
  132.             groupSpecifier.multicastEnabled = true;
  133.             groupSpecifier.peerToPeerDisabled = false;
  134.            
  135.             netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());
  136.             netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  137.         }
  138.  
  139.  
  140.         public function sendMessage(handler:String, o:Object):void
  141.         {
  142.             sendStream.send(handler, o);
  143.         }
  144.        
  145.         public function setLogger(logger:TextField):void
  146.         {
  147.             this.logger = logger;
  148.         }
  149.        
  150.         public function setCamera(cam:Camera):void
  151.         {
  152.             this.camera = cam;
  153.         }
  154.        
  155.         public function doEvent(data:String):void
  156.         {
  157.             var e:ConnectionEvent = new ConnectionEvent(ConnectionEvent.STATUS, data);
  158.             this.dispatchEvent(e);
  159.         }
  160.     }
  161. }
Add Comment
Please, Sign In to add comment