Pakket | flash.net |
Klasse | public class NetGroup |
Overerving | NetGroup EventDispatcher Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
-
Voor het bewaken van de servicekwaliteit. De eigenschap
info
bevat een NetGroupInfo-object. De eigenschappen van dit object leveren voor deze groep statistieken met betrekking tot de servicekwaliteit. -
Voor het posten van berichten. Roep
post()
aan om ActionScript-berichten te verzenden naar alle leden van een groep. -
Voor gestuurde routering. Roep
sendToNearest()
,sendToNeighbor()
ensendToAllNeighbors()
aan om een kort gegevensbericht te versturen naar een bepaald lid van een peer-to-peergroep. De bron en het doel hoeven geen rechtstreekse verbinding te hebben. -
Voor objectreplicatie. Roep
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
endenyRequestedObject()
aan om grote hoeveelheden gegevens op te splitsen en te repliceren naar alle knooppunten in een peer-to-peergroep.
In de clientklasse NetGroup verzendt de NetConnection de volgende gebeurtenissen:
- NetGroup.Connect.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
De eigenschap info.group
van het gebeurtenisobject bevat een verwijzing naar de gebeurtenisbron (de NetGroup). De NetGroup verzendt alle andere gebeurtenissen. In de serverklasse NetGroup verzendt de NetGroup alle gebeurtenissen.
Zie Sociale media-ervaringen met Flash Media en RTMFP (in het Engels), eveneens door Tom Krcha, voor informatie over het gebruik van groepen bij peer-ondersteund netwerken.
Zie Peer-to-peer op het Flash-platform met RTMFP (in het Engels) door Adobe-computerwetenschapper Matthew Kaufman voor meer informatie over de technische details van peer-ondersteund netwerken.
Verwante API-elementen
flash.net.NetStream
flash.events.NetStatusEvent info.code-waarden die beginnen met 'NetGroup'.
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
estimatedMemberCount : Number [alleen-lezen]
Geeft het geschatte aantal leden van de groep aan, gebaseerd op de dichtheid van de lokale omgeving en met als aanname een gelijke verdeling van groepsadressen. | NetGroup | ||
info : NetGroupInfo [alleen-lezen]
Retourneert een NetGroupInfo-object waarvan de eigenschappen statistieken bevatten ten aanzien van de servicekwaliteit van het RTMFP-peer-to-peergegevenstransport van deze NetGroup. | NetGroup | ||
localCoverageFrom : String [alleen-lezen]
Geeft het begin aan van het bereik van de groepsadressen waarvoor dit knooppunt het meest verantwoordelijk en het meest 'dichtbij' is. | NetGroup | ||
localCoverageTo : String [alleen-lezen]
Geeft aan het einde het bereik van de groepsadressen aan, waarvoor dit knooppunt het meest verantwoordelijk en het meest 'dichtbij' is. | NetGroup | ||
neighborCount : Number [alleen-lezen]
Geeft het aantal groepsleden aan die een rechtstreekse verbinding hebben met dit knooppunt. | NetGroup | ||
receiveMode : String
Geeft de routering van de ontvangstmodus van dit knooppunt aan als één van de waarden in de opsommingsklasse NetGroupReceiveMode. | NetGroup | ||
replicationStrategy : String
Geeft de ophaalstrategie voor objectreplicatie aan. | NetGroup |
Methode | Gedefinieerd door | ||
---|---|---|---|
Maakt een NetGroup voor het opgegeven NetConnection-object en koppelt deze aan de groep die is opgegeven in groupspec. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt. | EventDispatcher | ||
Hiermee worden objecten van startIndex tot en met endIndex toegevoegd aan de set met objecten die door dit knooppunt bij buurknooppunten worden aangeduid als objecten waarvoor het knooppunt aanvragen accepteert. | NetGroup | ||
Hiermee wordt handmatig een record toegevoegd waarin staat dat peerID een lid is van de groep. | NetGroup | ||
Hiermee wordt een buur handmatig toegevoegd door onmiddellijk een directe verbinding te maken met de opgegeven peerID, die al lid moet zijn van deze groep. | NetGroup | ||
Hiermee worden objecten van startIndex tot en met endIndex toegevoegd aan de set met objecten die moeten worden opgehaald. | NetGroup | ||
Verbinding met de groep verbreken en deze NetGroup afsluiten. | NetGroup | ||
Zet een peerID in een groepsadres om dat geschikt is voor gebruik met de sendToNearest()-methode. | NetGroup | ||
Weigert een aanvraag die in een NetGroup.Replication.Request van een NetStatusEvent-gebeurtenis is ontvangen voor een object dat eerder is aangekondigd met addHaveObjects(). | NetGroup | ||
Verzendt een gebeurtenis naar de gebeurtenisstroom. | EventDispatcher | ||
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis. | EventDispatcher | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Hiermee wordt een bericht naar alle leden van een groep verstuurd. | NetGroup | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Verwijdert een listener uit het object EventDispatcher. | EventDispatcher | ||
Hiermee worden objecten van startIndex tot en met endIndex verwijderd uit de set met objecten die door dit knooppunt bij buurknooppunten worden aangeduid als objecten waarvoor het knooppunt aanvragen accepteert. | NetGroup | ||
Hiermee worden objecten van startIndex tot en met endIndex verwijderd uit de set met objecten die moeten worden opgehaald. | NetGroup | ||
Hiermee wordt er aan alle buren een bericht gestuurd. | NetGroup | ||
Verstuurt een bericht aan de buur (of het lokale knooppunt) het dichtst in de buurt van het opgegeven groepadres. | NetGroup | ||
Verstuurt een bericht naar de buur die wordt opgegeven door de parameter sendMode. | NetGroup | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object | ||
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis. | EventDispatcher | ||
Accepteert een aanvraag die wordt ontvangen door NetStatusEvent NetGroup.Replication.Request voor een object dat eerder is aangekondigd met de methode addHaveObjects(). | NetGroup |
Gebeurtenis | Overzicht | Gedefinieerd door | ||
---|---|---|---|---|
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de besturingssysteemfocus krijgt en actief wordt. | EventDispatcher | |||
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de systeemfocus verliest en inactief wordt. | EventDispatcher | |||
Wordt verzonden wanneer een NetGroup-object de status of fout ervan meldt. | NetGroup |
estimatedMemberCount | eigenschap |
estimatedMemberCount:Number
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Geeft het geschatte aantal leden van de groep aan, gebaseerd op de dichtheid van de lokale omgeving en met als aanname een gelijke verdeling van groepsadressen.
Implementatie
public function get estimatedMemberCount():Number
Verwante API-elementen
info | eigenschap |
info:NetGroupInfo
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Retourneert een NetGroupInfo-object waarvan de eigenschappen statistieken bevatten ten aanzien van de servicekwaliteit van het RTMFP-peer-to-peergegevenstransport van deze NetGroup.
Implementatie
public function get info():NetGroupInfo
Verwante API-elementen
localCoverageFrom | eigenschap |
localCoverageFrom:String
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Geeft het begin aan van het bereik van de groepsadressen waarvoor dit knooppunt het meest verantwoordelijk en het meest 'dichtbij' is. Het bereik is opgegeven in de toenemende richting langs de groepsadresringmod 2256.
Implementatie
public function get localCoverageFrom():String
Verwante API-elementen
localCoverageTo | eigenschap |
localCoverageTo:String
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Geeft aan het einde het bereik van de groepsadressen aan, waarvoor dit knooppunt het meest verantwoordelijk en het meest 'dichtbij' is. Het bereik is opgegeven in de toenemende richting langs de groepsadresringmod 2256.
Implementatie
public function get localCoverageTo():String
Verwante API-elementen
neighborCount | eigenschap |
receiveMode | eigenschap |
receiveMode:String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Geeft de routering van de ontvangstmodus van dit knooppunt aan als één van de waarden in de opsommingsklasse NetGroupReceiveMode.
Implementatie
public function get receiveMode():String
public function set receiveMode(value:String):void
Verwante API-elementen
replicationStrategy | eigenschap |
replicationStrategy:String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Geeft de ophaalstrategie voor objectreplicatie aan. De waarde is een van de opgesomde waarden in de klasse NetGroupReplicationStrategy.
Implementatie
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
Verwante API-elementen
NetGroup | () | Constructor |
public function NetGroup(connection:NetConnection, groupspec:String)
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Maakt een NetGroup voor het opgegeven NetConnection-object en koppelt deze aan de groep die is opgegeven in groupspec
.
In de meeste gevallen kan een groupspec
de netwerkuplink van het lokale systeem gebruiken. Wanneer een NetStream- of NetGroup-object wordt gemaakt met een groupspec, wordt door Flash Player een privcaydialoogvenster weergegeven. In het dialoogvenster wordt gevraagd of Flash Player de verbinding kan gebruiken om gegevens te delen met de peers van de gebruiker. Als de gebruiker klikt op de optie voor toestaan voor dit domein, wordt het dialoogvenster niet meer weergegeven als de gebruiker een volgende keer opnieuw verbinding maakt met deze toepassing. Als een gebruiker peer-ondersteund netwerken niet toestaat, worden alle peerfuncties binnen de groep (posten van berichten, gestuurde routering, objectreplicatie en multicast) uitgeschakeld. Als dit wordt toegestaan, wordt een gebeurtenis NetStatusEvent verzonden naar de gebeurtenislistener van de NetConnection met NetGroup.Connect.Success
in de eigenschap code
van het object info
. Als dit niet wordt toegestaan, wordt de eigenschap code
ingesteld op NetGroup.Connect.Rejected
. Als u een willekeurige methode van het NetGroup-object aanroept wordt een uitzondering gegenereerd, totdat een NetGroup.Connect.Success
-gebeurtenis wordt ontvangen.
Opmerking: Als een client een abonnement neemt op een native IP-multicaststream, wordt het beveiligingsdialoogvenster niet weergegeven.
Parametersconnection:NetConnection — Een object NetConnection.
| |
groupspec:String — Met deze string wordt aangegeven aan welke RTMFP-peer-to-peergroep het lid wordt gekoppeld, inclusief de naam, capaciteiten, beperkingen en autorisaties van dit lid.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Gegenereerde uitzondering
ArgumentError — De instantie NetConnection heeft geen verbinding.
| |
Error — De groupspec is ongeldig.
|
Verwante API-elementen
addHaveObjects | () | methode |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee worden objecten van startIndex
tot en met endIndex
toegevoegd aan de set met objecten die door dit knooppunt bij buurknooppunten worden aangeduid als objecten waarvoor het knooppunt aanvragen accepteert. De Have-set is standaard leeg. Een index moet een geheel getal tussen 0 en 9007199254740992 zijn.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
Deze methode verzendt een NetStatusEvent naar de gebeurtenislistener van de NetGroup met NetGroup.Replication.Request
in de eigenschap code
van het object info
.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
startIndex:Number — Het begin van de reeks met objectindexen die worden toegevoegd aan de Have-set.
| |
endIndex:Number — Het einde van de reeks met objectindexen die worden toegevoegd aan de Have-set.
|
Gegenereerde uitzondering
RangeError — Er is aan deze methode een getal doorgegeven dat kleiner is dan 0 of groter is dan 9007199254740992.
|
Verwante API-elementen
addMemberHint | () | methode |
public function addMemberHint(peerID:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee wordt handmatig een record toegevoegd waarin staat dat peerID
een lid is van de groep. Er wordt alleen direct verbinding gemaakt als dit nodig blijkt voor de topologie.
Parameters
peerID:String — De peerID die wordt toegevoegd aan de set met mogelijke buren.
|
Boolean — TRUE indien gelukt, FALSE indien mislukt.
|
Verwante API-elementen
addNeighbor | () | methode |
public function addNeighbor(peerID:String):Boolean
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee wordt een buur handmatig toegevoegd door onmiddellijk een directe verbinding te maken met de opgegeven peerID
, die al lid moet zijn van deze groep. De directe verbinding kan later worden verbroken als de verbinding niet noodzakelijk is voor de topologie.
Parameters
peerID:String — De peerID waarmee direct verbinding wordt gemaakt.
|
Boolean — TRUE indien gelukt, FALSE indien mislukt.
|
Verwante API-elementen
addWantObjects | () | methode |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee worden objecten van startIndex
tot en met endIndex
toegevoegd aan de set met objecten die moeten worden opgehaald. Een index moet een geheel getal tussen 0 en 9007199254740992 zijn. De Want-set is standaard leeg.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
Deze methode verstuurt een NetStatusEvent-gebeurtenis naar de gebeurtenislistener van de NetGroup met NetGroup.Replication.Fetch.SendNotify
in de eigenschap info.code
. Deze gebeurtenis wordt gevolgd door de gebeurtenis NetGroup.Replication.Fetch.Failed
of NetGroup.Replication.Fetch.Result
.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
startIndex:Number — Het begin van de reeks met objectindexen die worden toegevoegd aan de Want-set.
| |
endIndex:Number — Het einde van de reeks met objectindexen die worden toegevoegd aan de Want-set.
|
Gegenereerde uitzondering
RangeError — Er is aan deze methode een getal doorgegeven dat kleiner is dan 0 of groter is dan 9007199254740992.
|
Verwante API-elementen
close | () | methode |
public function close():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Verbinding met de groep verbreken en deze NetGroup afsluiten. Deze NetGroup kan niet meer worden gebruikt wanneer deze methode eenmaal is aangeroepen.
convertPeerIDToGroupAddress | () | methode |
public function convertPeerIDToGroupAddress(peerID:String):String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Converteert een peerID naar een groepsadres dat geschikt is voor gebruik met de sendToNearest()
-methode.
Parameters
peerID:String — De peerID die moet worden omgezet.
|
String — Het groepadres voor de peerID.
|
Verwante API-elementen
denyRequestedObject | () | methode |
public function denyRequestedObject(requestID:int):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Weigert een aanvraag die in een NetGroup.Replication.Request
van een NetStatusEvent-gebeurtenis is ontvangen voor een object dat eerder is aangekondigd met addHaveObjects()
. De aanvrager kan een nieuwe aanvraag indienen voor dit object tenzij of totdat het wordt verwijderd uit de Have-set.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
requestID:int — De aanvraag-id zoals wordt weergegeven in de gebeurtenis NetGroup.Replication.Request .
|
Verwante API-elementen
post | () | methode |
public function post(message:Object):String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee wordt een bericht naar alle leden van een groep verstuurd. Als u deze methode wilt aanroepen moet de eigenschap GroupSpecifier.postingEnabled
zijn ingesteld op true
in de groupspec die is doorgegeven aan de NetGroup-constructor. Zie "Post messages to a group" in Flash Media Server Developer’s Guide voor meer informatie.
Berichten moeten uniek zijn. Een bericht dat identiek is aan een bericht dat eerder is gepost wordt niet doorgegeven. Gebruik een volgnummer om berichten uniek te maken.
Berichtlevering is niet geordend. Berichtlevering is niet gegarandeerd.
Berichten worden in AMF van een serienummer voorzien. Het bericht mag van een van de volgende typen zijn: Object, int, Number of String. Het bericht mag geen filmclip zijn.
Deze methode verstuurt een NetStatusEvent naar de gebeurtenislistener van de NetGroup met "NetGroup.Posting.Notify"
in de eigenschap info.code
. De gebeurtenis "NetGroup.Posting.Notify"
wordt verstuurd naar de NetGroup op zowel de client als de server.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
message:Object — Het bericht dat naar alle leden van de groep wordt verstuurd.
|
String — De messageID van het bericht, indien gepost, of null bij een fout. De messageID is de hexadecimale waarde van de SHA256 van de onbewerkte bytes van de berichtserialisatie.
|
Verwante API-elementen
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
Wanneer u de toepassing uitvoert, kunt u een groepnaam in het tekstinvoerveld invoeren. De GroupSpecifier-klasse gebruikt de naam (samen met de GroupSpecifier-eigenschappen die u hebt ingesteld) om een tekenreeks te maken die vanaf dan de unieke naam van de groep is. Om een andere client aan de groep te koppelen, moet die client dezelfde groepnaam gebruiken. Bijvoorbeeld, als client A de groepnaam 'firstmesh' gebruikt, moeten andere clienten die met client A willen communiceren ook de groepnaam 'firstmesh' gebruiken. Als client B de groepnaam 'kite' gebruikt, wordt de verbinding voltooid, maar wordt er een nieuwe groep gemaakt en kan deze niet communiceren met client A of iemand in de groep 'firstmesh'.
Om dit voorbeeld uit te voeren moet u een component Button, Label, TextInput en TextArea toevoegen aan de Library in Flash Pro toe.
package { import flash.display.Sprite; import flash.events.TextEvent; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import fl.events.ComponentEvent; import fl.controls.Label; import fl.controls.Button; import fl.controls.TextInput; import fl.controls.TextArea; import flash.text.TextFieldAutoSize; import flash.net.*; public class NetGroupPostExample extends Sprite{ private var connectButton:Button; private var disconnectButton:Button; private var groupNameText:TextInput; private var userNameText:TextInput; private var chatText:TextInput; private var statusLog:TextArea; private var groupLabel:Label; private var userLabel:Label; private var netConnection:NetConnection = null; private var netGroup:NetGroup = null; private var sequenceNumber:uint = 0; private var connected:Boolean = false; private var joinedGroup:Boolean = false; private const SERVER:String = "rtmfp://fms.example.com/someapp"; public function NetGroupPostExample() { DoUI(); } // Writes messages to the TextArea. private function StatusMessage(msg:Object):void{ statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } // Handles all NetStatusEvents for the NetConnection and the NetGroup. // This code includes cases it doesn't handle so you can see the cases // and their info objects for learning purposes. private function NetStatusHandler(e:NetStatusEvent):void{ StatusMessage(e.info.code + "\n"); switch(e.info.code){ case "NetConnection.Connect.Success": connectButton.enabled = false; disconnectButton.enabled = true; OnConnect(); break; case "NetConnection.Connect.Closed": OnDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } // Creates a NetConnection to Flash Media Server if the app isn't already connected // and if there's a group name in the TextInput field. private function DoConnect(e:MouseEvent):void{ if(!connected && (groupNameText.length > 0)){ StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); // To connect to Flash Media Server, pass the server name. netConnection.connect(SERVER); } else { StatusMessage("Enter a group name"); } } // Called in the "NetConnection.Connect.Success" case in the NetStatusEvent handler. private function OnConnect():void{ StatusMessage("Connected\n"); connected = true; // Create a GroupSpecifier object to pass to the NetGroup constructor. // The GroupSpecifier determines the properties of the group var groupSpecifier:GroupSpecifier; groupSpecifier = new GroupSpecifier("aslrexample/" + groupNameText.text); groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetGroupConnect():void{ joinedGroup = true; } private function DoDisconnect(e:MouseEvent):void{ if(netConnection){ netConnection.close(); } } private function OnDisconnect():void{ StatusMessage("Disconnected\n"); netConnection = null; netGroup = null; connected = false; joinedGroup = false; connectButton.enabled = true; disconnectButton.enabled = false; } private function ClearChatText():void{ chatText.text = ""; } // Called when you the chatText field has focus and you press Enter. private function DoPost(e:ComponentEvent):void{ if(joinedGroup){ var message:Object = new Object; message.user = userNameText.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); } else { StatusMessage("Click Connect before sending a chat message"); } ClearChatText(); } private function OnPosting(message:Object):void{ StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoUI():void { groupLabel = new Label(); groupLabel.move(20, 10); groupLabel.autoSize = TextFieldAutoSize.LEFT groupLabel.text = "Group name:" addChild(groupLabel); groupNameText = new TextInput(); groupNameText.move(90, 10); groupNameText.text = "channel" + (int(Math.random() * 899) + 101); addChild(groupNameText); connectButton = new Button(); connectButton.addEventListener(MouseEvent.CLICK, DoConnect); connectButton.move(205, 10); connectButton.label = "Connect"; addChild(connectButton); disconnectButton = new Button(); disconnectButton.addEventListener(MouseEvent.CLICK, DoDisconnect); disconnectButton.move(310, 10); disconnectButton.label = "Disconnect"; disconnectButton.enabled = false; addChild(disconnectButton); statusLog = new TextArea(); statusLog.move(30, 38); statusLog.width = 360; statusLog.height = 215; statusLog.editable = false; addChild(statusLog); userLabel = new Label(); userLabel.move(20, 270); userLabel.autoSize = TextFieldAutoSize.LEFT userLabel.text = "User name:" addChild(userLabel); userNameText = new TextInput(); userNameText.move(80, 270); userNameText.text = "user " + int(Math.random() * 65536); addChild(userNameText); chatText = new TextInput(); chatText.addEventListener(ComponentEvent.ENTER, DoPost); chatText.move(185, 270); chatText.maxChars = 255; chatText.width = 215; addChild(chatText); } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} } }
removeHaveObjects | () | methode |
public function removeHaveObjects(startIndex:Number, endIndex:Number):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee worden objecten van startIndex
tot en met endIndex
verwijderd uit de set met objecten die door dit knooppunt bij buurknooppunten worden aangeduid als objecten waarvoor het knooppunt aanvragen accepteert. Een index moet een geheel getal tussen 0 en 9007199254740992 zijn.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
startIndex:Number — Het begin van de reeks met objectindexen die worden verwijderd van de Have-set.
| |
endIndex:Number — Het einde van de reeks met objectindexen die worden verwijderd van de Have-set.
|
Gegenereerde uitzondering
RangeError — Er is aan deze methode een getal doorgegeven dat kleiner is dan 0 of groter is dan 9007199254740992.
|
Verwante API-elementen
removeWantObjects | () | methode |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee worden objecten van startIndex
tot en met endIndex
verwijderd uit de set met objecten die moeten worden opgehaald. Een index moet een geheel getal tussen 0 en 9007199254740992 zijn.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
startIndex:Number — Het begin van de reeks met objectindexen die worden verwijderd van de Want-set.
| |
endIndex:Number — Het einde van de reeks met objectindexen die worden verwijderd van de Want-set.
|
Gegenereerde uitzondering
RangeError — Er is aan deze methode een getal doorgegeven dat kleiner is dan 0 of groter is dan 9007199254740992.
|
Verwante API-elementen
sendToAllNeighbors | () | methode |
public function sendToAllNeighbors(message:Object):String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Hiermee wordt er aan alle buren een bericht gestuurd. Retourneert NetGroupSendResult.SENT
als ten minste één buur is geselecteerd.
Zie "Route messages directly to a peer" in Flash Media Server Developer’s Guide voor meer informatie over routeringsberichten.
Wanneer een knooppunt een bericht ontvangt, wordt er een NetStatusEvent verzonden naar de gebeurtenisluisteraar van NetGroup met NetGroup.SendTo.Notify
in de eigenschap Code
van het Info
-object.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
message:Object — Het te verzenden bericht.
|
String — Een eigenschap van de opsommingsklasse NetGroupSendResult die aangeeft of het versturen is gelukt of niet.
|
Verwante API-elementen
sendToNearest | () | methode |
public function sendToNearest(message:Object, groupAddress:String):String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Verstuurt een bericht aan de buur (of het lokale knooppunt) het dichtst in de buurt van het opgegeven groepadres. Bepaalt de buren voor de gehele ring. Retourneert NetGroupSendResult.SENT
als het bericht correct is verzonden.
Zie "Route messages directly to a peer" in Flash Media Server Developer’s Guide voor meer informatie over routeringsberichten.
Wanneer een knooppunt een bericht ontvangt, wordt er een NetStatusEvent verzonden naar de gebeurtenisluisteraar van NetGroup met NetGroup.SendTo.Notify
in de eigenschap Code
van het Info
-object.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
message:Object — Het te verzenden bericht.
| |
groupAddress:String — Het groepsadres waarnaar het bericht wordt gerouteerd.
|
String — Een eigenschap van de opsommingsklasse NetGroupSendResult die aangeeft of het versturen is gelukt of niet.
|
Verwante API-elementen
sendToNeighbor | () | methode |
public function sendToNeighbor(message:Object, sendMode:String):String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Verstuurt een bericht naar de buur die wordt opgegeven door de parameter sendMode
. Retourneert NetGroupSendResult.SENT
als het bericht correct is verzonden naar de gevraagde bestemming.
Zie "Route messages directly to a peer" in Flash Media Server Developer’s Guide voor meer informatie over routeringsberichten.
Wanneer een knooppunt een bericht ontvangt, wordt er een NetStatusEvent verzonden naar de gebeurtenisluisteraar van NetGroup met NetGroup.SendTo.Notify
in de eigenschap Code
van het Info
-object.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
message:Object — Het te verzenden bericht.
| |
sendMode:String — Een eigenschap van de opsommingsklasse NetGroupSendMode waarmee de buur wordt aangegeven waarnaar het bericht wordt verzonden.
|
String — Een eigenschap van de opsommingsklasse NetGroupSendResult die aangeeft of het versturen is gelukt of niet.
|
Verwante API-elementen
writeRequestedObject | () | methode |
public function writeRequestedObject(requestID:int, object:Object):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Accepteert een aanvraag die wordt ontvangen door NetStatusEvent NetGroup.Replication.Request
voor een object dat eerder is aangekondigd met de methode addHaveObjects()
. Het object
mag van een van de volgende typen zijn: Object, int, Number of String. Het object
mag geen filmclip zijn.
Zie "Replicate an object within a group" in Flash Media Server Developer’s Guide voor meer informatie over objectreplicatie.
OPMERKING: test de NetGroup.Neighbor.Connect
-gebeurtenis voordat u deze methode aanroept.
Parameters
requestID:int — De aanvraag-id zoals wordt weergegeven in de gebeurtenis NetGroup.Replication.Request .
| |
object:Object — Het object dat overeenkomt met de index in de gebeurtenis NetGroup.Replication.Request .
|
Verwante API-elementen
netStatus | Gebeurtenis |
flash.events.NetStatusEvent
eigenschap NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 10.1 |
Wordt verzonden wanneer een NetGroup-object de status of fout ervan meldt. De gebeurtenis netStatus
bevat de eigenschap info
. De eigenschap info
is een object dat specifieke informatie over de gebeurtenis bevat, bijvoorbeeld of een verbindingspoging is geslaagd of mislukt.
type
van een gebeurtenisobject netStatus
.
Deze gebeurtenis heeft de volgende eigenschappen:
Eigenschap | Waarde |
---|---|
bubbles | false |
cancelable | false ; er is geen standaardgedrag om te annuleren. |
currentTarget | Het object dat het gebeurtenisobject actief verwerkt met een gebeurtenislistener. |
info | Een object met eigenschappen die de status of fout van het object beschrijven. |
target | Het object NetConnection of NetStream dat zijn status meldt. |
Verwante API-elementen
Wanneer u de toepassing uitvoert, kunt u een groepnaam in het tekstinvoerveld invoeren. De GroupSpecifier-klasse gebruikt de naam (samen met de GroupSpecifier-eigenschappen die u hebt ingesteld) om een tekenreeks te maken die vanaf dan de unieke naam van de groep is. Om een andere client aan de groep te koppelen, moet die client dezelfde groepnaam gebruiken. Bijvoorbeeld, als client A de groepnaam 'firstmesh' gebruikt, moeten andere clienten die met client A willen communiceren ook de groepnaam 'firstmesh' gebruiken. Als client B de groepnaam 'kite' gebruikt, wordt de verbinding voltooid, maar wordt er een nieuwe groep gemaakt en kan deze niet communiceren met client A of iemand in de groep 'firstmesh'.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="OnApplicationComplete()"> <mx:Script> <![CDATA[ private var netConnection:NetConnection = null; private var netStream:NetStream = null; private var netGroup:NetGroup = null; private var video:Video = null; private var sequenceNumber:uint = 0; private var resizeTimer:Timer = null; private const SERVER:String = "rtmfp://fms.example.com/someapp"; [Bindable] private var connected:Boolean = false; [Bindable] private var joinedGroup:Boolean = false; private function OnApplicationComplete():void { userName.text = "user " + int(Math.random() * 65536); groupName.text = "channel" + (int(Math.random() * 899) + 101); resizeTimer = new Timer(2000.0); resizeTimer.addEventListener(TimerEvent.TIMER, DoResizeVideo); resizeTimer.start(); } private function StatusMessage(msg:Object):void { statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } private function NetStatusHandler(e:NetStatusEvent):void { StatusMessage(e.info.code); switch(e.info.code) { case "NetConnection.Connect.Success": OnConnect(); break; case "NetConnection.Connect.Closed": case "NetConnection.Connect.Failed": case "NetConnection.Connect.Rejected": case "NetConnection.Connect.AppShutdown": case "NetConnection.Connect.InvalidApp": OnDisconnect(); break; case "NetStream.Connect.Success": // e.info.stream OnNetStreamConnect(); break; case "NetStream.Connect.Rejected": // e.info.stream case "NetStream.Connect.Failed": // e.info.stream DoDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group DoDisconnect(); break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": DoResizeVideo(); break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } private function DoConnect():void { StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netConnection.connect(SERVER); } private function OnConnect():void { var groupSpecifier:GroupSpecifier; StatusMessage("Connected\n"); connected = true; 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); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetStreamConnect():void { netStream.client = this; var mic:Microphone = Microphone.getMicrophone(); if(mic) { mic.codec = SoundCodec.SPEEX; mic.setSilenceLevel(0); netStream.attachAudio(mic); StatusMessage("got microphone\n"); } var camera:Camera = Camera.getCamera(); if(camera) { camera.setMode(320, 240, 10); camera.setQuality(30000, 0); camera.setKeyFrameInterval(15); videoDisplay.attachCamera(camera); videoDisplay.maintainAspectRatio = true; netStream.attachCamera(camera); StatusMessage("got camera\n"); } netStream.publish("stream"); } private function OnNetGroupConnect():void { joinedGroup = true; } private function DoDisconnect():void { if(netConnection) netConnection.close(); videoDisplay.attachCamera(null); } private function OnDisconnect():void { StatusMessage("Disconnected\n"); netConnection = null; netStream = null; netGroup = null; connected = false; joinedGroup = false; } private function ClearChatText():void { chatText.text = ""; } private function DoPost():void { var message:Object = new Object; message.user = userName.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); chatText.callLater(ClearChatText); } private function OnPosting(message:Object):void { StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoResizeVideo(ignored:* = null):void { if(video) { if( (0 == video.videoHeight) || (0 == video.videoWidth) ) { video.height = videoDisplay.height; video.width = videoDisplay.width; video.x = 0; video.y = 0; } else { var videoAspect:Number = Number(video.videoWidth) / Number(video.videoHeight); var displayAspect:Number = Number(videoDisplay.width) / Number(videoDisplay.height); var adjustFactor:Number; if(videoAspect >= displayAspect) // video is wider than display { adjustFactor = Number(video.videoWidth) / Number(videoDisplay.width); video.width = videoDisplay.width; video.height = int(Number(video.videoHeight) / adjustFactor); video.x = 0; video.y = int((videoDisplay.height - video.height) / 2); } else { adjustFactor = Number(video.videoHeight) / Number(videoDisplay.height); video.height = videoDisplay.height; video.width = int(Number(video.videoWidth) / adjustFactor); video.x = int((videoDisplay.width - video.width) / 2); video.y = 0; } } } } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} public function ValidateConnectAllowed(isConnected:Boolean, groupNameText:String):Boolean { return (!isConnected) && (groupNameText.length > 0); } ]]> </mx:Script> <mx:VBox top="10" right="10" left="10" bottom="10" verticalGap="6"> <mx:HBox width="100%"> <mx:Text text="Group:"/> <mx:TextInput id="groupName" width="100%" text="default" enabled="{!connected}"/> <mx:Button label="Connect" click="DoConnect()" enabled="{ValidateConnectAllowed(connected, groupName.text)}" /> <mx:Button label="Disconnect" click="DoDisconnect()" enabled="{connected}" /> </mx:HBox> <mx:VideoDisplay id="videoDisplay" width="320" height="240" resize="DoResizeVideo()"/> <mx:TextArea id="statusLog" width="100%" height="100%"/> <mx:HBox width="100%"> <mx:TextInput id="userName" width="160" /> <mx:TextInput id="chatText" width="100%" enabled="{joinedGroup}" enter="DoPost()"/> </mx:HBox> </mx:VBox> </mx:Application>
Wed Jun 13 2018, 11:42 AM Z