Pacchetto | flash.net |
Classe | public class NetGroup |
Ereditarietà | NetGroup EventDispatcher Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
-
Monitoraggio della qualità del servizio. La proprietà
info
contiene contiene un oggetto NetGroupInfo le cui proprietà forniscono statistiche QoS per questo gruppo. -
Post. Chiamate
post()
per trasmettere messaggi ActionScript a tutti i membri di un gruppo. -
Indirizzamento diretto. Chiamate
sendToNearest()
,sendToNeighbor()
esendToAllNeighbors()
per inviare un breve messaggio di dati a un membro specifico di un gruppo peer-to-peer. L'origine e la destinazione non necessitano di una connessione diretta. -
Replicazione di oggetti. Chiamate
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
edenyRequestedObject()
per suddividere grandi quantità di dati in parti più piccole e replicarle su tutti i nodi in un gruppo peer-to-peer.
Nella classe NetGroup sul lato client, NetConnection invia gli eventi seguenti:
- NetGroup.Connect.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
La proprietà info.group
dell'oggetto evento contiene un riferimento all'origine dell'evento (NetGroup). Il NetGroup invia tutti gli altri eventi. Nella classe NetGroup sul lato server, il NetGroup invia tutti gli eventi:
Per informazioni sull’uso dei gruppi con la connettività peer-to-peer, vedete Social Media Experiences with Flash Media and RTMFP (Esperienze sui social media con Flash Media e RTMFP), sempre a cura di Tom Krcha.
Per informazioni sui dettagli tecnici della connettività peer-to-peer, vedete P2P on the Flash Platform with RTMFP (P2P sulla piattaforma Flash con RTMFP) a cura di Matthew Kaufman, scienziato informatico di Adobe.
Elementi API correlati
flash.net.NetStream
flash.events.NetStatusEvent Valori info.code che iniziano con "NetGroup".
Proprietà | Definito da | ||
---|---|---|---|
constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | ||
estimatedMemberCount : Number [sola lettura]
Specifica il numero previsto di membri del gruppo, in base alla densità dei vicini locali e presupponendo una distribuzione omogenea degli indirizzi di gruppo. | NetGroup | ||
info : NetGroupInfo [sola lettura]
Restituisce un oggetto NetGroupInfo le cui proprietà forniscono statistiche QoS (Quality of Service) relative al trasporto dati peer-to-peer RTMFP di questo NetGroup. | NetGroup | ||
localCoverageFrom : String [sola lettura]
Specifica l'inizio dell'intervallo di indirizzi di gruppo per il quale questo nodo è il "più vicino" e responsabile. | NetGroup | ||
localCoverageTo : String [sola lettura]
Specifica la fine dell'intervallo di indirizzi di gruppo per il quale questo nodo è il "più vicino" e responsabile. | NetGroup | ||
neighborCount : Number [sola lettura]
Specifica il numero di membri del gruppo al quale questo nodo è connesso direttamente. | NetGroup | ||
receiveMode : String
Specifica la modalità di ricezione dell'indirizzamento di questo nodo come uno dei valori nella classe di enumerazione NetGroupReceiveMode. | NetGroup | ||
replicationStrategy : String
Specifica la strategia di recupero della replicazione oggetti. | NetGroup |
Metodo | Definito da | ||
---|---|---|---|
Costruisce un oggetto NetGroup sull'oggetto NetConnection specificato e lo unisce al gruppo specificato da groupspec. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un oggetto listener di eventi con un oggetto EventDispatcher, in modo che il listener riceva la notifica di un evento. | EventDispatcher | ||
Aggiunge gli oggetti da startIndex a endIndex alla serie di oggetti che questo nodo segnala ai vicini come oggetti per i quali eseguirà le richieste. | NetGroup | ||
Aggiunge manualmente un record per specificare che peerID è un membro del gruppo. | NetGroup | ||
Aggiunge manualmente un vicino, stabilendo immediatamente una connessione diretta all'oggetto peerID specificato, che deve già essere parte di questo gruppo. | NetGroup | ||
Aggiunge gli oggetti da startIndex a endIndex alla serie di oggetti da recuperare. | NetGroup | ||
Interrompe la connessione con il gruppo e chiude questo NetGroup. | NetGroup | ||
Converte un peerID in un indirizzo di gruppo adatto per essere utilizzato con il metodo sendToNearest(). | NetGroup | ||
Rifiuta la richiesta ricevuta in un evento NetStatusEvent NetGroup.Replication.Request relativamente a un oggetto precedentemente segnalato con il metodo addHaveObjects(). | NetGroup | ||
Invia un evento nel flusso di eventi. | EventDispatcher | ||
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento. | EventDispatcher | ||
Indica se per un oggetto è definita una proprietà specifica. | Object | ||
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | ||
Invia un messaggio a tutti i vicini di un gruppo. | NetGroup | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Rimuove un listener dall'oggetto EventDispatcher. | EventDispatcher | ||
Rimuove gli oggetti da startIndex a endIndex dalla serie di oggetti che questo nodo segnala ai vicini come oggetti per i quali eseguirà le richieste. | NetGroup | ||
Rimuove gli oggetti da startIndex a endIndex dalla serie di oggetti da recuperare. | NetGroup | ||
Invia un messaggio a tutti i vicini. | NetGroup | ||
Invia un messaggio al vicino (o nodo locale) più prossimo all'indirizzo di gruppo specificato. | NetGroup | ||
Invia un messaggio al vicino specificato dal parametro sendMode. | NetGroup | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object | ||
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato. | EventDispatcher | ||
Soddisfa la richiesta ricevuta da NetStatusEvent NetGroup.Replication.Request relativamente a un oggetto precedentemente segnalato con il metodo addHaveObjects(). | NetGroup |
Evento | Riepilogo | Definito da | ||
---|---|---|---|---|
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR ottiene lo stato di attivazione del sistema operativo ed entra nello stato attivo. | EventDispatcher | |||
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR perde l'attivazione del sistema operativo e sta entrando nello stato inattivo. | EventDispatcher | |||
Inviato quando un oggetto NetGroup segnala il proprio stato o una condizione di errore. | NetGroup |
estimatedMemberCount | proprietà |
estimatedMemberCount:Number
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Specifica il numero previsto di membri del gruppo, in base alla densità dei vicini locali e presupponendo una distribuzione omogenea degli indirizzi di gruppo.
Implementazione
public function get estimatedMemberCount():Number
Elementi API correlati
info | proprietà |
info:NetGroupInfo
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Restituisce un oggetto NetGroupInfo le cui proprietà forniscono statistiche QoS (Quality of Service) relative al trasporto dati peer-to-peer RTMFP di questo NetGroup.
Implementazione
public function get info():NetGroupInfo
Elementi API correlati
localCoverageFrom | proprietà |
localCoverageFrom:String
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Specifica l'inizio dell'intervallo di indirizzi di gruppo per il quale questo nodo è il "più vicino" e responsabile. L'intervallo viene specificato nella direzione in aumento lungo l'anello di indirizzi del gruppo mod 2256.
Implementazione
public function get localCoverageFrom():String
Elementi API correlati
localCoverageTo | proprietà |
localCoverageTo:String
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Specifica la fine dell'intervallo di indirizzi di gruppo per il quale questo nodo è il "più vicino" e responsabile. L'intervallo viene specificato nella direzione in aumento lungo l'anello di indirizzi del gruppo mod 2256.
Implementazione
public function get localCoverageTo():String
Elementi API correlati
neighborCount | proprietà |
receiveMode | proprietà |
receiveMode:String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Specifica la modalità di ricezione dell'indirizzamento di questo nodo come uno dei valori nella classe di enumerazione NetGroupReceiveMode.
Implementazione
public function get receiveMode():String
public function set receiveMode(value:String):void
Elementi API correlati
replicationStrategy | proprietà |
replicationStrategy:String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Specifica la strategia di recupero della replicazione oggetti. Il valore è uno di quelli enumerati nella classe NetGroupReplicationStrategy.
Implementazione
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
Elementi API correlati
NetGroup | () | Funzione di costruzione |
public function NetGroup(connection:NetConnection, groupspec:String)
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Costruisce un oggetto NetGroup sull'oggetto NetConnection specificato e lo unisce al gruppo specificato da groupspec
.
Nella maggior parte dei casi, un oggetto groupspec
è in grado di utilizzare il collegamento di rete in uscita sul sistema locale. Quando un oggetto NetStream o NetGroup viene costruito con un groupspec, Flash Player visualizza la finestra di dialogo Privacy. La finestra chiede se Flash Player può utilizzare la connessione per condividere i dati con i peer di un utente. Se l'utente fa clic su "Consenti per questo dominio", la finestra di dialogo non viene visualizzata la volta successiva che l'utente si connette a questa applicazione. Se un utente non consente la connettività peer-to-peer, tutte le funzioni peer all'interno del gruppo (posting, indirizzamento diretto, replicazione di oggetti, multicast) vengono disattivate. Se l'autorizzazione viene concessa, viene inviato un evento NetStatusEvent al listener di eventi di NetConnection con NetGroup.Connect.Success
nella proprietà code
dell'oggetto info
. Se l'autorizzazione viene negata, la proprietà code
restituisce NetGroup.Connect.Rejected
. Finché non viene ricevuto un evento NetGroup.Connect.Success
, se tentate di chiamare qualsiasi metodo dell'oggetto NetGroup verrà generata un'eccezione.
Nota: quando un client sottoscrive un flusso multicast con IP nativo, la finestra di dialogo di sicurezza non viene visualizzata.
Parametriconnection:NetConnection — Un oggetto NetConnection.
| |
groupspec:String — Una stringa che specifica il gruppo peer-to-peer RTMFP da unire, inclusi il nome, le funzionalità, le restrizioni e le autorizzazioni di questo membro.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Genera
ArgumentError — L'istanza NetConnection non è connessa.
| |
Error — L'oggetto groupspec non è valido.
|
Elementi API correlati
addHaveObjects | () | metodo |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Aggiunge gli oggetti da startIndex
a endIndex
alla serie di oggetti che questo nodo segnala ai vicini come oggetti per i quali eseguirà le richieste. Per impostazione predefinita, la serie Have è vuota. Gli indici devono essere numeri interi compresi tra 0 e 9007199254740992.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
Questo metodo invia un evento NetStatusEvent al listener di eventi di NetGroup con "NetGroup.Replication.Request"
nella proprietà code
dell'oggetto info
.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
startIndex:Number — L'inizio dell'intervallo di indici di oggetti da aggiungere alla serie Have.
| |
endIndex:Number — La fine dell'intervallo di indici di oggetti da aggiungere alla serie Have.
|
Genera
RangeError — Un numero passato a questo metodo è minore di 0 o maggiore di 9007199254740992.
|
Elementi API correlati
addMemberHint | () | metodo |
public function addMemberHint(peerID:String):Boolean
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Aggiunge manualmente un record per specificare che peerID
è un membro del gruppo. Una connessione immediata viene tentata solo se è necessaria per la topologia.
Parametri
peerID:String — L'oggetto peerID da aggiungere alla serie di potenziali vicini.
|
Boolean — TRUE in caso positivo, FALSE in caso negativo.
|
Elementi API correlati
addNeighbor | () | metodo |
public function addNeighbor(peerID:String):Boolean
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Aggiunge manualmente un vicino, stabilendo immediatamente una connessione diretta all'oggetto peerID
specificato, che deve già essere parte di questo gruppo. Questa connessione diretta potrebbe essere rimossa in seguito, se non è necessaria per la topologia.
Parametri
peerID:String — L'oggetto peerID a cui connettersi immediatamente.
|
Boolean — TRUE in caso positivo, FALSE in caso negativo.
|
Elementi API correlati
addWantObjects | () | metodo |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Aggiunge gli oggetti da startIndex
a endIndex
alla serie di oggetti da recuperare. Gli indici devono essere numeri interi compresi tra 0 e 9007199254740992. Per impostazione predefinita, la serie Want è vuota.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
Questo metodo invia un evento NetStatusEvent al listener di eventi di NetGroup con NetGroup.Replication.Fetch.SendNotify
nella proprietà info.code
. Questo evento è seguito da un evento NetGroup.Replication.Fetch.Failed
o NetGroup.Replication.Fetch.Result
.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
startIndex:Number — L'inizio dell'intervallo di indici di oggetti da aggiungere alla serie Want.
| |
endIndex:Number — La fine dell'intervallo di indici di oggetti da aggiungere alla serie Want.
|
Genera
RangeError — Un numero passato a questo metodo è minore di 0 o maggiore di 9007199254740992.
|
Elementi API correlati
close | () | metodo |
public function close():void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Interrompe la connessione con il gruppo e chiude questo NetGroup. Questo NetGroup non è utilizzabile dopo la chiamata a questo metodo.
convertPeerIDToGroupAddress | () | metodo |
public function convertPeerIDToGroupAddress(peerID:String):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Converte un peerID in un indirizzo di gruppo adatto per essere utilizzato con il metodo sendToNearest()
.
Parametri
peerID:String — Il peerID da convertire.
|
String — L'indirizzo del gruppo per questo peerID.
|
Elementi API correlati
denyRequestedObject | () | metodo |
public function denyRequestedObject(requestID:int):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Rifiuta la richiesta ricevuta in un evento NetStatusEvent NetGroup.Replication.Request
relativamente a un oggetto precedentemente segnalato con addHaveObjects()
. Il richiedente può richiedere questo oggetto di nuovo o finché non viene ritirato dalla serie Have.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
requestID:int — L'identificativo della richiesta indicato nell'evento NetGroup.Replication.Request .
|
Elementi API correlati
post | () | metodo |
public function post(message:Object):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Invia un messaggio a tutti i vicini di un gruppo. Per chiamare questo metodo, la proprietà GroupSpecifier.postingEnabled
deve essere true
nel groupspec passato alla funzione di costruzione NetGroup. Per ulteriori informazioni, vedete "Post messages to a group" (Inviare messaggi a un gruppo) nel manuale Flash Media Server Developer’s Guide.
Tutti i messaggi devono essere univoci. Un messaggio identico a un altro inviato in precedenza potrebbe non essere propagato. Utilizzate un numero di sequenza per rendere univoci i messaggi.
La consegna dei messaggi non è ordinata. La consegna dei messaggi non è garantita.
I messaggi sono serializzati in AMF. Il messaggio può essere di uno dei seguenti tipi: Object, int, Number o String. Non può invece essere un oggetto MovieClip.
Questo metodo invia un evento NetStatusEvent al listener di eventi di NetGroup con "NetGroup.Posting.SendNotify"
nella proprietà info.code
. L'evento "NetGroup.Posting.Notify"
viene inviato al NetGroup sia sul client che sul server.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
message:Object — Il messaggio da inviare a tutti gli altri membri del gruppo.
|
String — L'oggetto messageID del messaggio se inviato oppure null in caso di errore. messageID è il valore esadecimale di SHA256 dei byte originari della serializzazione del messaggio.
|
Elementi API correlati
Esempio ( Come utilizzare questo esempio )
Quando eseguite l'applicazione, potete immettere qualunque nome di gruppo nel campo di testo di input. La classe GroupSpecifier usa il nome (insieme alle eventuali proprietà GroupSpecifier che avete impostato) per creare una stringa che diventa il nome univoco e definitivo del gruppo. Per connettere un altro client al gruppo, tale client deve utilizzare lo stesso nome di gruppo. Ad esempio, se il client A utilizza il nome gruppo "firstmesh", gli altri client che intendono comunicare con il client A dovranno a loro volta utilizzare il nome gruppo "firstmesh". Se il client B usa invece il nome gruppo "kite", la connessione verrà stabilita correttamente, ma verrà creato un nuovo nome gruppo e il client B non sarà in grado di comunicare con il client A o con altri membri del gruppo "firstmesh".
Per eseguire questo esempio, aggiungete i componenti Button, Label, TextInput e TextArea alla libreria in Flash Professional.
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 | () | metodo |
public function removeHaveObjects(startIndex:Number, endIndex:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Rimuove gli oggetti da startIndex
a endIndex
dalla serie di oggetti che questo nodo segnala ai vicini come oggetti per i quali eseguirà le richieste. Gli indici devono essere numeri interi compresi tra 0 e 9007199254740992.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
startIndex:Number — L'inizio dell'intervallo di indici di oggetti da rimuovere dalla serie Have.
| |
endIndex:Number — La fine dell'intervallo di indici di oggetti da rimuovere dalla serie Have.
|
Genera
RangeError — Un numero passato a questo metodo è minore di 0 o maggiore di 9007199254740992.
|
Elementi API correlati
removeWantObjects | () | metodo |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Rimuove gli oggetti da startIndex
a endIndex
dalla serie di oggetti da recuperare. Gli indici devono essere numeri interi compresi tra 0 e 9007199254740992.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
startIndex:Number — L'inizio dell'intervallo di indici di oggetti da rimuovere dalla serie Want.
| |
endIndex:Number — La fine dell'intervallo di indici di oggetti da rimuovere dalla serie Want.
|
Genera
RangeError — Un numero passato a questo metodo è minore di 0 o maggiore di 9007199254740992.
|
Elementi API correlati
sendToAllNeighbors | () | metodo |
public function sendToAllNeighbors(message:Object):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Invia un messaggio a tutti i vicini. Restituisce NetGroupSendResult.SENT
se è stato selezionato almeno un vicino.
Per ulteriori informazioni sull'instradamento dei messaggi, vedete "Route messages directly to a peer" (Instradare messaggi direttamente a un peer) nel manuale Flash Media Server Developer’s Guide.
Quando un nodo riceve un messaggio, viene inviato un evento NetStatusEvent al listener di eventi di NetGroup con NetGroup.SendTo.Notify
nella proprietà code
dell'oggetto info
.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
message:Object — Il messaggio da inviare.
|
String — Una proprietà della classe di enumerazione NetGroupSendResult che indica il risultato positivo o negativo dell'invio.
|
Elementi API correlati
sendToNearest | () | metodo |
public function sendToNearest(message:Object, groupAddress:String):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Invia un messaggio al vicino (o nodo locale) più prossimo all'indirizzo di gruppo specificato. Considera i vicini dall'intero anello. Restituisce NetGroupSendResult.SENT
se il messaggio è stato inviato correttamente alla destinazione.
Per ulteriori informazioni sull'instradamento dei messaggi, vedete "Route messages directly to a peer" (Instradare messaggi direttamente a un peer) nel manuale Flash Media Server Developer’s Guide.
Quando un nodo riceve un messaggio, viene inviato un evento NetStatusEvent al listener di eventi di NetGroup con NetGroup.SendTo.Notify
nella proprietà code
dell'oggetto info
.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
message:Object — Il messaggio da inviare.
| |
groupAddress:String — L'indirizzo del gruppo verso il quale indirizzare il messaggio.
|
String — Una proprietà della classe di enumerazione NetGroupSendResult che indica il risultato positivo o negativo dell'invio.
|
Elementi API correlati
sendToNeighbor | () | metodo |
public function sendToNeighbor(message:Object, sendMode:String):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Invia un messaggio al vicino specificato dal parametro sendMode
. Restituisce NetGroupSendResult.SENT
se il messaggio è stato inviato correttamente alla destinazione richiesta.
Per ulteriori informazioni sull'instradamento dei messaggi, vedete "Route messages directly to a peer" (Instradare messaggi direttamente a un peer) nel manuale Flash Media Server Developer’s Guide.
Quando un nodo riceve un messaggio, viene inviato un evento NetStatusEvent al listener di eventi di NetGroup con NetGroup.SendTo.Notify
nella proprietà code
dell'oggetto info
.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
message:Object — Il messaggio da inviare.
| |
sendMode:String — Una proprietà della classe di enumerazione NetGroupSendMode che specifica il vicino a cui inviare il messaggio.
|
String — Una proprietà della classe di enumerazione NetGroupSendResult che indica il risultato positivo o negativo dell'invio.
|
Elementi API correlati
writeRequestedObject | () | metodo |
public function writeRequestedObject(requestID:int, object:Object):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10.1, AIR 2 |
Soddisfa la richiesta ricevuta da NetStatusEvent NetGroup.Replication.Request
relativamente a un oggetto precedentemente segnalato con il metodo addHaveObjects()
. L'oggetto
può essere di uno dei seguenti tipi: Object, int, Number o String. Non può invece essere un oggetto
MovieClip.
Per ulteriori informazioni sulla replicazione degli oggetti, vedete "Replicate an object within a group" (Replicare un oggetto all'interno di un gruppo) nel manuale Flash Media Server Developer’s Guide.
NOTA: eseguite una prova dell'evento NetGroup.Neighbor.Connect
prima di chiamare questo metodo.
Parametri
requestID:int — L'identificativo della richiesta indicato nell'evento NetGroup.Replication.Request .
| |
object:Object — L'oggetto corrispondente all'indice indicato indicato nell'evento NetGroup.Replication.Request .
|
Elementi API correlati
netStatus | Evento |
flash.events.NetStatusEvent
proprietà NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 10.1 |
Inviato quando un oggetto NetGroup segnala il proprio stato o una condizione di errore. L'evento netStatus
contiene una proprietà info
. La proprietà info
è un oggetto che contiene informazioni sull'evento, ad esempio se un tentativo di connessione è riuscito o fallito.
type
di un oggetto evento netStatus
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto Event con un listener di eventi. |
info | Un oggetto con proprietà che ne descrivono lo stato o la condizione di errore. |
target | L'oggetto NetConnection o NetStream che ne riporta lo stato. |
Elementi API correlati
Quando eseguite l'applicazione, potete immettere qualunque nome di gruppo nel campo di testo di input. La classe GroupSpecifier usa il nome (insieme alle eventuali proprietà GroupSpecifier che avete impostato) per creare una stringa che diventa il nome univoco e definitivo del gruppo. Per connettere un altro client al gruppo, tale client deve utilizzare lo stesso nome di gruppo. Ad esempio, se il client A utilizza il nome gruppo "firstmesh", gli altri client che intendono comunicare con il client A dovranno a loro volta utilizzare il nome gruppo "firstmesh". Se il client B usa invece il nome gruppo "kite", la connessione verrà stabilita correttamente, ma verrà creato un nuovo nome gruppo e il client B non sarà in grado di comunicare con il client A o con altri membri del gruppo "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, 02:44 PM Z