Paket | flash.net |
Klass | public class NetGroup |
Arv | NetGroup EventDispatcher Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
-
Övervakning av tjänstens kvalitet (QoS). Egenskapen
info
innehåller ett NetGroupInfo-objekt vars egenskaper tillhandahåller QoS-statistik (Quality of Service) för den här gruppen. -
Publicering. Anropa
post()
för att sända ActionScript-meddelanden till alla medlemmar i en grupp. -
Riktad routning Anropa
sendToNearest()
,sendToNeighbor()
ochsendToAllNeighbors()
för att skicka ett kort datameddelande till en viss medlem i en peer-to-peer-grupp. Det behöver inte finnas någon direktanslutning mellan källan och målet. -
Objektreplikering Anropa
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
ochdenyRequestedObject()
för att dela upp omfattande data i mindre delar och replikera dessa till alla noder i en peer-to-peer-grupp.
På klientsidan av NetGroup-klassen skickar NetConnection följande händelser:
- NetGroup.Connect.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
Egenskapen info.group
för händelseobjektet innehåller en referens till händelsekällan (NetGroup). Från NetGroup skickas alla andra händelser. I NetGroup-klassen på serversiden skickar NetGroup alla händelser.
Information om hur du använder grupper med P2P-nätverk finns i Sociala medier med Flash Media och RTMFP, också av Tom Krcha.
Teknisk information om P2P-nätverk finns i P2P på Flash-plattformen med RTMFP av Matthew Kaufman, datalog hos Adobe.
Relaterade API-element
flash.net.NetStream
flash.events.NetStatusEvent info.code-värden som börjar med "NetGroup".
Egenskap | Definieras med | ||
---|---|---|---|
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
estimatedMemberCount : Number [skrivskyddad]
Anger det uppskattade antalet medlemmar i gruppen, baserat på täckning av det lokala området och under förutsättning att gruppadresserna är jämnt fördelade. | NetGroup | ||
info : NetGroupInfo [skrivskyddad]
Returnerar ett NetGroupInfo-objekt vars egenskaper tillhandahåller QoS-statistik (Quality of Service) om denna NetGroup RTMFP Peer-to-Peer-datatransport. | NetGroup | ||
localCoverageFrom : String [skrivskyddad]
Anger början på det gruppadressintervall för vilket den här noden är den närmsta och således ”ansvarig”. | NetGroup | ||
localCoverageTo : String [skrivskyddad]
Anger slutet på det gruppadressintervall för vilket den här noden är den närmsta och således ”ansvarig”. | NetGroup | ||
neighborCount : Number [skrivskyddad]
Anger det antal gruppmedlemmar som den här noden är direkt ansluten till. | NetGroup | ||
receiveMode : String
Anger den här nodens routningsmottagningsläge som ett av värdena i uppräkningsklassen NetGroupReceiveMode. | NetGroup | ||
replicationStrategy : String
Anger hämtningsstrategi för objektreplikering. | NetGroup |
Metod | Definieras med | ||
---|---|---|---|
Skapar en NetGroup på det angivna NetConnection-objektet och lägger till det i den grupp som anges av groupspec. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | EventDispatcher | ||
Lägger till objekt från startIndex till och med endIndex till den uppsättning med objekt, för vilka den här noden annonserar att den slutför begäranden för grannar. | NetGroup | ||
Lägger manuellt till en post att peerID är medlem i gruppen. | NetGroup | ||
Lägger manuellt till en granne via direkt anslutning till angivet peerID, vilket måste ingå i den här gruppen redan. | NetGroup | ||
Lägger till objekt från startIndex till och med endIndex till den uppsättning med objekt som ska hämtas. | NetGroup | ||
Koppla bort från gruppen och stäng denna NetGroup. | NetGroup | ||
Konverterar ett peerID till en gruppadress som kan användas med metoden sendToNearest(). | NetGroup | ||
Nekar en begäran som tagits emot av NetStatusEvent NetGroup.Replication.Request för ett objekt som tidigare annonserats med metoden addHaveObjects(). | NetGroup | ||
Skickar en händelse till händelseflödet. | EventDispatcher | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | EventDispatcher | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Skickar ett meddelande till alla medlemmar i en grupp. | NetGroup | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | EventDispatcher | ||
Tar bort objekt från startIndex till och med endIndex från den uppsättning med objekt, för vilka den här noden annonserar att den slutför begäranden för grannar. | NetGroup | ||
Tar bort objekt från startIndex till och med endIndex från den uppsättning med objekt som ska hämtas. | NetGroup | ||
Skickar ett meddelande till alla grannar. | NetGroup | ||
Skickar ett meddelande till den granne (eller lokala nod) som är närmst angiven gruppadress. | NetGroup | ||
Skickar ett meddelande till den granne som anges av parametern sendMode. | NetGroup | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | EventDispatcher | ||
Uppfyller den begäran som tagits emot av NetStatusEvent NetGroup.Replication.Request för ett objekt som tidigare annonserats med metoden addHaveObjects(). | NetGroup |
Händelse | Sammanfattning | Definieras med | ||
---|---|---|---|---|
[utsändningshändelse] Skickas när Flash Player eller AIR får operativsystemfokus och blir aktivt. | EventDispatcher | |||
[utsändningshändelse] Skickas när Flash Player eller AIR förlorar operativsystemfokus och blir inaktivt. | EventDispatcher | |||
Skickas när ett NetGroup-objekt rapporterar om sin status eller sitt feltillstånd. | NetGroup |
estimatedMemberCount | egenskap |
estimatedMemberCount:Number
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Anger det uppskattade antalet medlemmar i gruppen, baserat på täckning av det lokala området och under förutsättning att gruppadresserna är jämnt fördelade.
Implementering
public function get estimatedMemberCount():Number
Relaterade API-element
info | egenskap |
info:NetGroupInfo
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Returnerar ett NetGroupInfo-objekt vars egenskaper tillhandahåller QoS-statistik (Quality of Service) om denna NetGroup RTMFP Peer-to-Peer-datatransport.
Implementering
public function get info():NetGroupInfo
Relaterade API-element
localCoverageFrom | egenskap |
localCoverageFrom:String
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Anger början på det gruppadressintervall för vilket den här noden är den närmsta och således ”ansvarig”. Intervallet anges i ökande riktning längs gruppadressens ring mod 2256.
Implementering
public function get localCoverageFrom():String
Relaterade API-element
localCoverageTo | egenskap |
localCoverageTo:String
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Anger slutet på det gruppadressintervall för vilket den här noden är den närmsta och således ”ansvarig”. Intervallet anges i ökande riktning längs gruppadressens ring mod 2256.
Implementering
public function get localCoverageTo():String
Relaterade API-element
neighborCount | egenskap |
receiveMode | egenskap |
receiveMode:String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Anger den här nodens routningsmottagningsläge som ett av värdena i uppräkningsklassen NetGroupReceiveMode.
Implementering
public function get receiveMode():String
public function set receiveMode(value:String):void
Relaterade API-element
replicationStrategy | egenskap |
replicationStrategy:String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Anger hämtningsstrategi för objektreplikering. Värdet är ett av de värden som räknas upp i klassen NetGroupReplicationStrategy.
Implementering
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
Relaterade API-element
NetGroup | () | Konstruktor |
public function NetGroup(connection:NetConnection, groupspec:String)
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skapar en NetGroup på det angivna NetConnection-objektet och lägger till det i den grupp som anges av groupspec
.
I de flesta fall kan groupspec
använda nätverksanslutningen på det lokala systemet. När ett NetStream- eller NetGroup-objekt skapas via en groupspec visas en sekretessdialogruta i Flash Player. I dialogrutan anger användaren om Flash Player får använda anslutningen för att dela data med peer-datorer. Om användaren klickar på ”Allow for this domain” (Tillåt för den här domänen) visas dialogrutan inte nästa gång använder ansluter till det här programmet. Om användaren inte tillåter P2P-nätverk inaktiveras alla peer-funktioner i gruppen (publicering, riktad routning och objektreplikering). Om behörighet ges skickas en NetStatusEvent till NetConnection-händelseavlyssnaren med NetGroup.Connect.Success
i egenskapen code
för info
-objektet. Om tillåtelse nekas får egenskapen code
värdet NetGroup.Connect.Rejected
. Om du försöker anropa en metod i NetGroup-objektet innan en NetGroup.Connect.Success
-händelse har tagits emot genereras ett undantagsfel.
Obs! När en klient prenumererar på en ursprunglig IP Multicast-ström visas inte säkerhetsdialogrutan.
Parametrarconnection:NetConnection — Ett NetConnection-objekt.
| |
groupspec:String — En sträng som anger RTMFP Peer-to-Peer-grupp att ansluta till, bland annat dess namn, funktioner, begränsningar och auktoriseringar för den här medlemmen.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Utlöser
ArgumentError — NetConnection-instansen är inte ansluten.
| |
Error — Gruppspecifikationen (groupspec) är ogiltig.
|
Relaterade API-element
addHaveObjects | () | metod |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Lägger till objekt från startIndex
till och med endIndex
till den uppsättning med objekt, för vilka den här noden annonserar att den slutför begäranden för grannar. Uppsättningen Finns är som standard tom. Index måste vara hela tal från 0 till och med 9 007 199 254 740 992.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Den här metoden skickar en NetStatusEvent till NetGroup-händelseavlyssnaren med "NetGroup.Replication.Request"
i egenskapen code
för info
-objektet.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
startIndex:Number — Början av det intervall med objektindex som ska läggas till i uppsättningen Finns.
| |
endIndex:Number — Slutet av det intervall med objektindex som ska läggas till i uppsättningen Finns.
|
Utlöser
RangeError — Ett tal som skickas till den här metoden är mindre än 0 eller större än 9 007 199 254 740 992.
|
Relaterade API-element
addMemberHint | () | metod |
public function addMemberHint(peerID:String):Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Lägger manuellt till en post att peerID
är medlem i gruppen. Försök till direkt anslutning till den sker bara om det krävs av topologiskäl.
Parametrar
peerID:String — Det peerID som ska läggs till i uppsättningen med möjliga grannar.
|
Boolean — TRUE om det lyckades, i annat fall FALSE.
|
Relaterade API-element
addNeighbor | () | metod |
public function addNeighbor(peerID:String):Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Lägger manuellt till en granne via direkt anslutning till angivet peerID
, vilket måste ingå i den här gruppen redan. Den här direkta anslutningen kan avbrytas senare om den inte krävs av topologiskäl.
Parametrar
peerID:String — Det peerID till vilket direkt anslutning ska ske.
|
Boolean — TRUE om det lyckades, i annat fall FALSE.
|
Relaterade API-element
addWantObjects | () | metod |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Lägger till objekt från startIndex
till och med endIndex
till den uppsättning med objekt som ska hämtas. Index måste vara hela tal från 0 till och med 9 007 199 254 740 992. Uppsättningen Önskas är som standard tom.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Den här metoden skickar en NetStatusEvent till NetGroup-händelseavlyssnaren med NetGroup.Replication.Fetch.SendNotify
i egenskapen info.code
. Den här händelsen följs av en NetGroup.Replication.Fetch.Failed
- eller NetGroup.Replication.Fetch.Result
-händelse.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
startIndex:Number — Början av det intervall med objektindex som ska läggas till i uppsättningen Önskas.
| |
endIndex:Number — Slutet av det intervall med objektindex som ska läggas till i uppsättningen Önskas.
|
Utlöser
RangeError — Ett tal som skickas till den här metoden är mindre än 0 eller större än 9 007 199 254 740 992.
|
Relaterade API-element
close | () | metod |
public function close():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Koppla bort från gruppen och stäng denna NetGroup. Denna NetGroup kan inte längre användas när den här metoden har anropats.
convertPeerIDToGroupAddress | () | metod |
public function convertPeerIDToGroupAddress(peerID:String):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Konverterar ett peerID till en gruppadress som kan användas med metoden sendToNearest()
.
Parametrar
peerID:String — Det peerID som ska konverteras.
|
String — Gruppadressen för peerID.
|
Relaterade API-element
denyRequestedObject | () | metod |
public function denyRequestedObject(requestID:int):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Nekar en begäran som tagits emot av NetStatusEvent NetGroup.Replication.Request
för ett objekt som tidigare annonserats med metoden addHaveObjects()
. Den som skickade begäran kan begära det här objektet igen om inte, eller tills, det tas bort från uppsättningen Finns.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
requestID:int — ID för begäran som det angetts i NetGroup.Replication.Request -händelsen.
|
Relaterade API-element
post | () | metod |
public function post(message:Object):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skickar ett meddelande till alla medlemmar i en grupp. Om du vill anropa den här metoden måste egenskapen GroupSpecifier.postingEnabled
vara true
i den groupspec som skickas till NetGroup-konstruktorn. Du hittar mer information i avsnittet "Post messages to a group" i Flash Media Server Developer’s Guide.
Alla meddelande måste vara unika. Ett meddelande som är identiskt med ett tidigare meddelande kanske inte distribueras. Använd ett sekvensnummer så att alla meddelanden är unika.
Meddelandena levereras inte i ordning. Meddelandeleveranserna garanteras inte.
Meddelandena serialiseras i AMF. Meddelandet kan vara någon av följande typer: Object, int, Number eller String. Meddelandet kan inte vara ett MovieClip.
Den här metoden skickar en NetStatusEvent till NetGroup-händelseavlyssnaren med "NetGroup.Posting.Notify"
i egenskapen info.code
. Händelsen "NetGroup.Posting.Notify"
skickas till NetGroup både på klienten och på servern.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
message:Object — Det meddelande som ska skickas till alla andra medlemmar i gruppen.
|
String — Meddelandets ID om det publicerades eller null vid fel. Meddelandets ID är den hexadecimala koden för det serialiserade meddelandets rå-byte från SHA256-funktionen.
|
Relaterade API-element
Exempel ( Så här använder du exemplet )
När du kör programmet kan du ange valfritt gruppnamn i textfältet för indata. Klassen GroupSpecifier använder namnet (tillsammans med eventuella GroupSpecifier-egenskaper du angett) för att skapa en sträng som alltid kommer att vara gruppens unika namn. Om du vill ansluta en annan klient till gruppen måste den klienten använda samma gruppnamn. Om klient A till exempel använder gruppnamnet "firstmesh" måste andra klienter som vill kommunicera med klient A också använda gruppnamnet "firstmesh". Om klient B använder gruppnamnet "kite" lyckas anslutningen, men det skapas en ny grupp och klient B kommer inte att kunna kommunicera med klient A eller andra i gruppen "firstmesh".
Om du vill köra det här exemplet lägger du till en Button-, en Label-, en TextInput- och en TextArea-komponent i biblioteket i Flash Pro.
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 | () | metod |
public function removeHaveObjects(startIndex:Number, endIndex:Number):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Tar bort objekt från startIndex
till och med endIndex
från den uppsättning med objekt, för vilka den här noden annonserar att den slutför begäranden för grannar. Index måste vara hela tal från 0 till och med 9 007 199 254 740 992.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
startIndex:Number — Början av det intervall med objektindex som ska tas bort från uppsättningen Finns.
| |
endIndex:Number — Slutet av det intervall med objektindex som ska tas bort från uppsättningen Finns.
|
Utlöser
RangeError — Ett tal som skickas till den här metoden är mindre än 0 eller större än 9 007 199 254 740 992.
|
Relaterade API-element
removeWantObjects | () | metod |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Tar bort objekt från startIndex
till och med endIndex
från den uppsättning med objekt som ska hämtas. Index måste vara hela tal från 0 till och med 9 007 199 254 740 992.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
startIndex:Number — Början av det intervall med objektindex som ska tas bort från uppsättningen Önskas.
| |
endIndex:Number — Slutet av det intervall med objektindex som ska tas bort från uppsättningen Önskas.
|
Utlöser
RangeError — Ett tal som skickas till den här metoden är mindre än 0 eller större än 9 007 199 254 740 992.
|
Relaterade API-element
sendToAllNeighbors | () | metod |
public function sendToAllNeighbors(message:Object):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skickar ett meddelande till alla grannar. Returnerar NetGroupSendResult.SENT
om minst en granne har valts.
Du hittar mer information om meddelanderoutning i avsnittet "Route messages directly to a peer" i Flash Media Server Developer’s Guide.
När en nod tar emot ett meddelande skickas en NetStatusEvent till händelseavlyssnaren för NetGroup med NetGroup.SendTo.Notify
i code
-egenskapen för objektet info
.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
message:Object — Det meddelande som ska skickas.
|
String — En egenskap i uppräkningsklassen NetGroupSendResult som anger om sändningen lyckades eller inte.
|
Relaterade API-element
sendToNearest | () | metod |
public function sendToNearest(message:Object, groupAddress:String):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skickar ett meddelande till den granne (eller lokala nod) som är närmst angiven gruppadress. Beaktar grannar från hela ringen. Returnerar NetGroupSendResult.SENT
om meddelande skickades utan fel mot sitt mål.
Du hittar mer information om meddelanderoutning i avsnittet "Route messages directly to a peer" i Flash Media Server Developer’s Guide.
När en nod tar emot ett meddelande skickas en NetStatusEvent till händelseavlyssnaren för NetGroup med NetGroup.SendTo.Notify
i code
-egenskapen för objektet info
.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
message:Object — Det meddelande som ska skickas.
| |
groupAddress:String — Den gruppadress till vilken meddelandet ska routas.
|
String — En egenskap i uppräkningsklassen NetGroupSendResult som anger om sändningen lyckades eller inte.
|
Relaterade API-element
sendToNeighbor | () | metod |
public function sendToNeighbor(message:Object, sendMode:String):String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skickar ett meddelande till den granne som anges av parametern sendMode
. Returnerar NetGroupSendResult.SENT
om meddelande skickades utan fel till begärt mål.
Du hittar mer information om meddelanderoutning i avsnittet "Route messages directly to a peer" i Flash Media Server Developer’s Guide.
När en nod tar emot ett meddelande skickas en NetStatusEvent till händelseavlyssnaren för NetGroup med NetGroup.SendTo.Notify
i code
-egenskapen för objektet info
.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
message:Object — Det meddelande som ska skickas.
| |
sendMode:String — En egenskap i uppräkningsklassen NetGroupSendMode som anger den granne till vilken meddelandet ska skickas.
|
String — En egenskap i uppräkningsklassen NetGroupSendResult som anger om sändningen lyckades eller inte.
|
Relaterade API-element
writeRequestedObject | () | metod |
public function writeRequestedObject(requestID:int, object:Object):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Uppfyller den begäran som tagits emot av NetStatusEvent NetGroup.Replication.Request
för ett objekt som tidigare annonserats med metoden addHaveObjects()
. object
kan vara någon av följande: Object, int, Number eller String. object
kan inte vara ett MovieClip.
Mer information om objektreplikering finns i avsnittet "Replicate an object within a group" i Flash Media Server Developer’s Guide.
Obs! Testa NetGroup.Neighbor.Connect
-händelsen innan du anropar den här metoden.
Parametrar
requestID:int — ID för begäran som det angetts i NetGroup.Replication.Request -händelsen.
| |
object:Object — Det objekt som motsvarar det index som anges i NetGroup.Replication.Request -händelsen.
|
Relaterade API-element
netStatus | Händelse |
flash.events.NetStatusEvent
egenskap NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 10.1 |
Skickas när ett NetGroup-objekt rapporterar om sin status eller sitt feltillstånd. netStatus
-händelsen innehåller en info
-egenskap. Egenskapen info
är ett objekt som innehåller information om händelsen, t.ex. om en anslutning lyckades eller misslyckades.
netStatus
-händelseobjekts type
-egenskap.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
info | Ett objekt med egenskaper som beskriver objektets status eller feltillstånd. |
target | NetConnection- eller NetStream-objektet rapporterar status. |
Relaterade API-element
När du kör programmet kan du ange valfritt gruppnamn i textfältet för indata. Klassen GroupSpecifier använder namnet (tillsammans med eventuella GroupSpecifier-egenskaper du angett) för att skapa en sträng som alltid kommer att vara gruppens unika namn. Om du vill ansluta en annan klient till gruppen måste den klienten använda samma gruppnamn. Om klient A till exempel använder gruppnamnet "firstmesh" måste andra klienter som vill kommunicera med klient A också använda gruppnamnet "firstmesh". Om klient B använder gruppnamnet "kite" lyckas anslutningen, men det skapas en ny grupp och klient B kommer inte att kunna kommunicera med klient A eller andra i gruppen "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>
Tue Jun 12 2018, 01:40 PM Z