Kai @ Adobe MAX 2009 - P2P mit Flash

Weniger bekannt ist, dass man mit dem Flash Builder Peer-to-Peer-Netzwerke zwischen Instanzen aufbauen kann. Zur Verwaltung der Netze mit RTFMP dient die Stratus-Technik.

vorlesen Druckansicht
Lesezeit: 3 Min.
Von
  • Kai König

Eine der weniger bekannten Funktionen der Flash-Plattform ist, Peer-to-Peer-Netzwerke zwischen Instanzen des Flash Builder aufzubauen. Das hört sich durchaus interessant an, denn es könnte helfen, unnötigen Client-zu-Server-Traffic – gegebenenfalls über Kontinente hinweg – zu vermeiden. Darum geht es hier aber nicht – dieses Blog-Post bezieht sich auf ein neues (und noch nicht verfügbares) Feature in Flash Player 10.1 und auf eine Technik mit dem Codenamen Stratus.

Stratus ist im Wesentlichen ein Online-Dienst (man merkt, dass ich krampfhaft versuche den Begriff "Cloud" zu vermeiden :-)), der Peer-2-Peer-Netzwerke auf Basis von RTFMP verwaltet. Adobe kategorisiert Stratus als sogenannten Introduction-Dienst. Bei letzterem handelt es sich ĂĽbrigens um das von Adobe entwickelte Real-Time Media Flow Protocol. Mit Flash Player 10.1 werden sich nun gezielt solche Netzwerke mit Stratus erzeugen und verwalten lassen. Dabei helfen bekannte Klassen wie flash.net.NetStream und flash.net.NetConnection, aber auch erst mit Flash Player 10.1 und AIR 2.0 verfĂĽgbare Klassen wie flash.net.NetGroup fĂĽr die Verwaltung einer Peer-2-Peer-Gruppe auf Stratus.

Die Vorgehensweise ist eigentlich ziemlich einfach:

1. Auf der Stratus-Webseite einen Developer-Key beantragen

2. Verbindung aufbauen:

netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);
netConnection.connect(SERVER + DEVKEY);

3. Falls die Verbindung erfolgreich hergestellt wurde, eine Gruppe definieren oder einer solchen beitreten:

groupSpecifier = new GroupSpecifier("max2009lab/" + groupName.text);
groupSpecifier.multicastEnabled = true;
groupSpecifier.postingEnabled = true;
groupSpecifier.serverChannelEnabled = true;

netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations());
netStream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);

netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());
netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);

Sobald das geschehen ist, wird innerhalb der Gruppe Peer-2-Peer-Kommunkation genutzt, wenn immer nötig und möglich. Im Rahmen des Verbindungsaufbaus zu Stratus muss der Benutzer allerdings diesen Fakt bestätigen (um unautorisierten Kommunikationsaufbau zu verhindern). Wie das im Moment (Pre-Beta mit einer extrem frühen Version des Flash Player 10.1 und unter Nutzung eines lokalen Stratus-Servers) aussieht, ist in der Abbildung zu sehen.



Ein sehr interessantes Konzept. In der Lab-Session fragte ein anderer Teilnehmer, ob es denn möglich sei, Stratus auch später lokal als P2P-Introduction-Dienst zu hosten. Adobes Antwort war, dass es durchaus möglich sei, dass die Stratus-Introduction-Technik Einzug in den Flash Media Server in einer der nächsten Versionen halten könne. Cool! :)

()