Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.BitmapData;
- import flash.display.Graphics;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.EventDispatcher;
- import flash.events.NetStatusEvent;
- import flash.media.Camera;
- import flash.net.*;
- import flash.text.TextField;
- import flash.utils.ByteArray;
- import flashx.textLayout.formats.Direction;
- public class Connection extends EventDispatcher
- {
- //STATUS CODES
- public static const NET_CONNECTION_CONNECT:String = "NetConnection.Connect.Success";
- public static const NET_GROUP_CONNECT:String = "NetGroup.Connect.Success";
- public static const NET_GROUP_NEIGHTBOUR_CONNECTED:String = "NetGroup.Neighbor.Connect";
- public static const NET_GROUP_NEIGHTBOUR_DISCONNECTED:String = "NetGroup.Neighbor.Disconnect";
- //
- private static var instance:Connection;
- private var roomName:String;
- private const SERVER:String = "rtmfp://p2p.rtmfp.net/";
- private const DEVKEY:String = "8ac640a494d65ff539848fe6-5e0b20063ccd";
- private var netConnection:NetConnection;
- private var groupSpecifier:GroupSpecifier;
- private var netGroup:NetGroup;
- private var sendStream:NetStream;
- private var userID:String;
- public var logger:TextField;
- private var camera:Camera;
- public static function getInstance():Connection
- {
- if(instance == null)
- instance = new Connection();
- return instance;
- }
- public static function removeInstance():void
- {
- Connection.getInstance().netConnection.close();
- Connection.instance = null;
- }
- public function Connection()
- {
- }
- public function connect(room:String):void
- {
- netConnection = new NetConnection();
- netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
- netConnection.connect(SERVER + DEVKEY);
- this.roomName = room;
- }
- private function netStatusHandler(event:NetStatusEvent):void
- {
- logger.text += event.info.code + "\n";
- switch(event.info.code)
- {
- case "NetConnection.Connect.Success":
- userID = netConnection.nearID;
- logger.text += "myID: " + netConnection.nearID + "\n";
- setupGroup();
- //EVENT
- doEvent(Connection.NET_CONNECTION_CONNECT);
- break;
- case "NetGroup.Connect.Success":
- //startPublishing();
- //EVENT
- doEvent(Connection.NET_GROUP_CONNECT);
- break;
- case "NetGroup.Posting.Notify":
- break;
- case "NetGroup.Neighbor.Connect":
- logger.text += event.info.peerID + "\n";
- sendUserInfo();
- doEvent(Connection.NET_GROUP_NEIGHTBOUR_CONNECTED);
- break;
- case "NetGroup.Neighbor.Disconnect":
- doEvent(Connection.NET_GROUP_NEIGHTBOUR_DISCONNECTED);
- break;
- }
- }
- public function startPublishing():void
- {
- logger.appendText("START PUBLISHING\n");
- sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
- sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
- sendStream.client = this;
- sendStream.attachCamera(camera);
- sendStream.publish(userID);
- }
- private function sendUserInfo():void
- {
- var o:Object = new Object();
- o.id = userID;
- o.type = "streamer";
- netGroup.post(o);
- }
- private function setupGroup():void
- {
- groupSpecifier = new GroupSpecifier(this.roomName);
- groupSpecifier.postingEnabled = true;
- groupSpecifier.serverChannelEnabled = true;
- groupSpecifier.multicastEnabled = true;
- groupSpecifier.peerToPeerDisabled = false;
- netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());
- netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
- }
- public function sendMessage(handler:String, o:Object):void
- {
- sendStream.send(handler, o);
- }
- public function setLogger(logger:TextField):void
- {
- this.logger = logger;
- }
- public function setCamera(cam:Camera):void
- {
- this.camera = cam;
- }
- public function doEvent(data:String):void
- {
- var e:ConnectionEvent = new ConnectionEvent(ConnectionEvent.STATUS, data);
- this.dispatchEvent(e);
- }
- }
- }
Add Comment
Please, Sign In to add comment