Paquete | flash.net |
Clase | public class NetGroup |
Herencia | NetGroup EventDispatcher Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
-
Controlar la calidad del servicio. La propiedad
infor
contiene un objeto NetGroupInfo cuyas propiedades proporcionan estadísticas QOS en este grupo. -
Enviar. Llame a
post()
para retransmitir mensajes de ActionScript a todos los miembros de un grupo. -
Enrutamiento directo. Llame a
sendToNearest()
,sendToNeighbor()
ysendToAllNeighbors()
para enviar un breve mensaje de datos a un determinado miembro de un grupo entre pares. El origen y el destino no necesitan tener una conexión directa. -
Duplicación de objetos. Llame a
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
ydenyRequestedObject()
para dividir grandes cantidades de datos en fragmentos y duplicarlos en todos los nodos de un grupo P2P.
En la clase NetGroup del lado del cliente, NetConnection distribuye los siguientes eventos:
- NetGroup.Connect.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
La propiedad info.group
del objeto de evento contiene una referencia al origen del evento (NetGroup). NetGroup distribuye todos los demás eventos. En la clase NetGroup del lado del servidor, NetGroup distribuye todos los eventos.
Para obtener información sobre el uso de grupos con redes asistidas por pares, consulte Social Media Experiences with Flash Media and RTMFP, también obra de Tom Krcha (en inglés).
Para obtener información sobre los detalles técnicos de las redes asistidas por pares, consulte P2P on the Flash Platform with RTMFP, obra de Matthew Kaufman, científico computacional de Adobe (en inglés).
Elementos de API relacionados
flash.net.NetStream
Los valores de flash.events.NetStatusEvent info.code se inician con "NetGroup".
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
estimatedMemberCount : Number [solo lectura]
Especifica un número estimado de miembros del grupo basado en la densidad de los elementos locales colindantes y asumiendo una distribución uniforme de direcciones de grupo. | NetGroup | ||
info : NetGroupInfo [solo lectura]
Devuelve un objeto NetGroupInfo cuyas propiedades proporcionan estadísticas de calidad de servicio relacionadas con el transporte de datos RTMFP P2P de este objeto NetGroup. | NetGroup | ||
localCoverageFrom : String [solo lectura]
Especifica el comienzo del rango de direcciones de grupo para el cual este nodo es el “más cercano” y responsable. | NetGroup | ||
localCoverageTo : String [solo lectura]
Especifica el final del rango de direcciones de grupo para el cual este nodo es el “más cercano” y responsable. | NetGroup | ||
neighborCount : Number [solo lectura]
Especifica el número de miembros del grupo al que este nodo se conecta directamente. | NetGroup | ||
receiveMode : String
Especifica el modo de recepción de enrutamiento de este nodo como uno de los valores de la clase NetGroupReceiveMode enum. | NetGroup | ||
replicationStrategy : String
Especifica la estrategia de recogida de duplicación de objetos. | NetGroup |
Método | Definido por | ||
---|---|---|---|
Construye un objeto NetGroup en el objeto NetConnection especificado y lo combina con el grupo especificado por groupspec. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Añade objetos de startIndex a endIndex al conjunto de objetos que este nodo anuncia a sus elementos colindantes como objetos para los que cumplirán las peticiones. | NetGroup | ||
Añade un registro manualmente especificando que peerID es un miembro del grupo. | NetGroup | ||
Añade un elemento colindante manualmente por conexión directa inmediata con el peerID especificado, que ya debe estar en este grupo. | NetGroup | ||
Añade objetos de startIndex a endIndex al conjunto de objetos que se va a recuperar. | NetGroup | ||
Se desconecta del grupo y cierra este NetGroup. | NetGroup | ||
Convierte un peerID en una dirección de grupo adecuada para su uso con el método sendToNearest(). | NetGroup | ||
Deniega a una solicitud recibida en NetGroup.Replication.Request de NetStatusEvent para un objeto previamente anunciado con addHaveObjects(). | NetGroup | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Envía un mensaje a todos los miembros del grupo. | NetGroup | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Elimina objetos de startIndex a endIndex del conjunto de objetos que este nodo anuncia a sus elementos colindantes como objetos para los que cumplirán las peticiones. | NetGroup | ||
Elimina objetos de startIndex a endIndex al conjunto de objetos que se va a recuperar. | NetGroup | ||
Envía un mensaje a todos los elementos colindantes. | NetGroup | ||
Envía un mensaje al elemento colindante (o nodo local) más cercano a la dirección de grupo especificada. | NetGroup | ||
Envía un mensaje al elemento colindante especificado por el parámetro sendMode. | NetGroup | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher | ||
Cumple la petición tal como se recibió por NetStatusEvent NetGroup.Replication.Request para un objeto previamente anunciado con el método addHaveObjects(). | NetGroup |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher | |||
Se distribuye cuando un objeto NetGroup informa sobre su estado o situación de error. | NetGroup |
estimatedMemberCount | propiedad |
estimatedMemberCount:Number
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica un número estimado de miembros del grupo basado en la densidad de los elementos locales colindantes y asumiendo una distribución uniforme de direcciones de grupo.
Implementación
public function get estimatedMemberCount():Number
Elementos de API relacionados
info | propiedad |
info:NetGroupInfo
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Devuelve un objeto NetGroupInfo cuyas propiedades proporcionan estadísticas de calidad de servicio relacionadas con el transporte de datos RTMFP P2P de este objeto NetGroup.
Implementación
public function get info():NetGroupInfo
Elementos de API relacionados
localCoverageFrom | propiedad |
localCoverageFrom:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica el comienzo del rango de direcciones de grupo para el cual este nodo es el “más cercano” y responsable. El rango se especifica en dirección ascendente en el anillo de direcciones de grupo (mod 2256).
Implementación
public function get localCoverageFrom():String
Elementos de API relacionados
localCoverageTo | propiedad |
localCoverageTo:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica el final del rango de direcciones de grupo para el cual este nodo es el “más cercano” y responsable. El rango se especifica en dirección ascendente en el anillo de direcciones de grupo (mod 2256).
Implementación
public function get localCoverageTo():String
Elementos de API relacionados
neighborCount | propiedad |
neighborCount:Number
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica el número de miembros del grupo al que este nodo se conecta directamente.
Implementación
public function get neighborCount():Number
Elementos de API relacionados
receiveMode | propiedad |
receiveMode:String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica el modo de recepción de enrutamiento de este nodo como uno de los valores de la clase NetGroupReceiveMode enum.
Implementación
public function get receiveMode():String
public function set receiveMode(value:String):void
Elementos de API relacionados
replicationStrategy | propiedad |
replicationStrategy:String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Especifica la estrategia de recogida de duplicación de objetos. El valor es uno de los valores enumerados en la clase NetGroupReplicationStrategy.
Implementación
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
Elementos de API relacionados
NetGroup | () | Información sobre |
public function NetGroup(connection:NetConnection, groupspec:String)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Construye un objeto NetGroup en el objeto NetConnection especificado y lo combina con el grupo especificado por groupspec
.
En la mayoría de los casos, groupspec
tiene el potencial de usar el enlaces ascendentes de red en el sistema local. Cuando un objeto NetStream o NetGroup se construye con un groupspec, Flash Player muestra un diálogo Privacidad. El diálogo le preguntará si Flash Player puede utilizar la conexión para compartir datos con un usuario homólogo. Si el usuario hace clic en "Permitir para este dominio", el diálogo no aparece la próxima vez que el usuario se conecte en la aplicación. Si un usuario no permite redes asistidas por pares, todas las funciones del grupo (envío, enrutamiento dirigido, duplicación de objetos y multidifusión) se desactivan. Si se permite, se envía un evento NetStatusEvent al detector de eventos NetConnection con NetGroup.Connect.Success
en la propiedad code
del objeto info
. Si se deniega, la propiedad code
es NetGroup.Connect.Rejected
. Hasta que no se recibe un evento NetGroup.Connect.Success
, se emitirá una excepción si se intenta llamar a cualquier método del objeto NetGroup.
Nota: cuando un cliente se suscribe a una de multidifusión IP nativa, el diálogo Seguridad no aparece.
Parámetrosconnection:NetConnection — Un objeto NetConnection.
| |
groupspec:String — Una cadena que especifica el grupo RTMFP P2P al que se va a unir, incluido su nombre, las capacidades, las restricciones y las autorizaciones de este miembro.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Emite
ArgumentError — La instancia de NetConnection no está conectada.
| |
Error — Las especificaciones del grupo no son válidas.
|
Elementos de API relacionados
addHaveObjects | () | método |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Añade objetos de startIndex
a endIndex
al conjunto de objetos que este nodo anuncia a sus elementos colindantes como objetos para los que cumplirán las peticiones. De forma predeterminada, el conjunto Have está vacío. Los índices deben ser números enteros entre 0 y 9007199254740992.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
Este método envía un evento NetStatusEvent al detector de eventos NetGroup con "NetGroup.Replication.Request"
en la propiedad code
del objeto info
.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
startIndex:Number — El comienzo del intervalo de los índices del objeto para añadir al conjunto Have.
| |
endIndex:Number — El final del intervalo de los índices del objeto para añadir al conjunto Have.
|
Emite
RangeError — El número transferido a este método es menor que 0 o mayor que 9007199254740992.
|
Elementos de API relacionados
addMemberHint | () | método |
public function addMemberHint(peerID:String):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Añade un registro manualmente especificando que peerID
es un miembro del grupo. Se intenta establecer una conexión inmediata sólo si es necesario para la topología.
Parámetros
peerID:String — peerID que se añade al conjunto de posibles elementos colindantes.
|
Boolean — TRUE si se completa correctamente, FALSE si falla.
|
Elementos de API relacionados
addNeighbor | () | método |
public function addNeighbor(peerID:String):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Añade un elemento colindante manualmente por conexión directa inmediata con el peerID
especificado, que ya debe estar en este grupo. Esta conexión directa se puede descargar más adelante si no es necesaria para la topología.
Parámetros
peerID:String — peerID al que se va a conectar inmediatamente.
|
Boolean — TRUE si se completa correctamente, FALSE si falla.
|
Elementos de API relacionados
addWantObjects | () | método |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Añade objetos de startIndex
a endIndex
al conjunto de objetos que se va a recuperar. Los índices deben ser números enteros entre 0 y 9007199254740992. De forma predeterminada, el conjunto Want está vacío.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
Este método envía un evento NetStatusEvent al detector de eventos NetGroup con NetGroup.Replication.Fetch.SendNotify
en la propiedad info.code
. Este evento es seguido por un evento NetGroup.Replication.Fetch.Failed
o NetGroup.Replication.Fetch.Result
.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
startIndex:Number — El comienzo del intervalo de los índices del objeto para añadir al conjunto Want.
| |
endIndex:Number — El final del intervalo de los índices del objeto para añadir al conjunto Want.
|
Emite
RangeError — El número transferido a este método es menor que 0 o mayor que 9007199254740992.
|
Elementos de API relacionados
close | () | método |
public function close():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Se desconecta del grupo y cierra este NetGroup. Este NetGroup no se puede utilizar después de llamar a este método.
convertPeerIDToGroupAddress | () | método |
public function convertPeerIDToGroupAddress(peerID:String):String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Convierte un peerID en una dirección de grupo adecuada para su uso con el método sendToNearest()
.
Parámetros
peerID:String — peerID que se va a convertir.
|
String — La dirección de grupo para peerID.
|
Elementos de API relacionados
denyRequestedObject | () | método |
public function denyRequestedObject(requestID:int):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Deniega a una solicitud recibida en NetGroup.Replication.Request
de NetStatusEvent para un objeto previamente anunciado con addHaveObjects()
. El solicitante puede volver a pedir este objeto a no ser que (o hasta que) se extraiga del conjunto Have.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
requestID:int — El identificador de petición tal como se incluye en el evento NetGroup.Replication.Request .
|
Elementos de API relacionados
post | () | método |
public function post(message:Object):String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Envía un mensaje a todos los miembros del grupo. Para llamar a este método, la propiedad GroupSpecifier.postingEnabled
debe ser true
en el groupspec transferido al constructor NetGroup. Para obtener más información, consulte “Post messages to a group” en Flash Media Server Developer’s Guide.
Todos los mensajes deben ser exclusivos; un mensaje idéntico a otro publicados anteriormente tal vez no se propague. Utilice un número secuencial para que los mensajes sean exclusivos.
La entrega de mensajes no se ordena. La entrega de mensajes no se garantiza.
Los mensajes se serializan en AMF. El mensaje puede ser de uno de los siguientes tipos: Objecto, int, Number o String. El mensaje no puede ser un objeto MovieClip.
Este método envía un evento NetStatusEvent al detector de eventos NetGroup con "NetGroup.Posting.Notify"
en la propiedad info.code
. El evento "NetGroup.Posting.Notify"
se distribuye a NetGroup tanto en el cliente como en el servidor.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
message:Object — El mensaje que se va a enviar a todos los miembros del grupo.
|
String — El objeto messageID del mensaje si se publica, o null en caso de error. El objeto messageID es el valor hexadecimal de SHA256 de los bytes sin procesar en la serialización del mensaje.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
Cuando se ejecuta la aplicación, puede introducir cualquier nombre de grupo en el campo de entrada de texto. La clase GroupSpecifier utiliza el nombre (junto con las propiedades GroupSpecifier que se hayan definido) para crear una cadena que es el nombre exclusivo indefinido del grupo. Para conectar con otro cliente al grupo, el cliente debe utilizar el mismo nombre de grupo. Por ejemplo, si el cliente A utiliza el nombre de grupo "malla", otros clientes que quieran comunicarse con el cliente A también deberán utilizar el nombre de grupo "malla". Si el cliente B utiliza el nombre del grupo "cometa", se conectará correctamente, pero que no creará un nuevo grupo y no podrá comunicarse con el cliente A ni con ningún miembro del grupo "malla".
Para ejecutar este ejemplo, añada un componente Button, Label, TextInput y TextArea a la biblioteca en 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 | () | método |
public function removeHaveObjects(startIndex:Number, endIndex:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Elimina objetos de startIndex
a endIndex
del conjunto de objetos que este nodo anuncia a sus elementos colindantes como objetos para los que cumplirán las peticiones. Los índices deben ser números enteros entre 0 y 9007199254740992.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
startIndex:Number — El comienzo del intervalo de los índices del objeto para eliminar del conjunto Have.
| |
endIndex:Number — El final del intervalo de los índices del objeto para eliminar del conjunto Have.
|
Emite
RangeError — El número transferido a este método es menor que 0 o mayor que 9007199254740992.
|
Elementos de API relacionados
removeWantObjects | () | método |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Elimina los objetos de startIndex
a endIndex
del conjunto de objetos para recuperar. Los índices deben ser números enteros entre 0 y 9007199254740992.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
startIndex:Number — El comienzo del intervalo de los índices del objeto para eliminar del conjunto Want.
| |
endIndex:Number — El final del intervalo de los índices del objeto para eliminar del conjunto Want.
|
Emite
RangeError — El número transferido a este método es menor que 0 o mayor que 9007199254740992.
|
Elementos de API relacionados
sendToAllNeighbors | () | método |
public function sendToAllNeighbors(message:Object):String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Envía un mensaje a todos los elementos colindantes. Devuelve NetGroupSendResult.SENT
si al menos se ha seleccionado un elemento colindante.
Para obtener más información sobre los mensajes de enrutamiento, consulte “Route messages directly to a peer” en Flash Media Server Developer’s Guide.
Cuando un nodo recibe un mensaje, se envía un evento NetStatusEvent al detector de eventos de NetGroup con NetGroup.SendTo.Notify
en la propiedad code
del objeto info
.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
message:Object — Mensaje que se enviará.
|
String — Una propiedad de clase de enumeración NetGroupSendResult que indica si el envío se ha realizado correctamente o si ha fallado.
|
Elementos de API relacionados
sendToNearest | () | método |
public function sendToNearest(message:Object, groupAddress:String):String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Envía un mensaje al elemento colindante (o nodo local) más cercano a la dirección de grupo especificada. Considera elementos colindantes de todo el anillo. Devuelve NetGroupSendResult.SENT
si el mensaje se envió correctamente a su destino.
Para obtener más información sobre los mensajes de enrutamiento, consulte “Route messages directly to a peer” en Flash Media Server Developer’s Guide.
Cuando un nodo recibe un mensaje, se envía un evento NetStatusEvent al detector de eventos de NetGroup con NetGroup.SendTo.Notify
en la propiedad code
del objeto info
.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
message:Object — Mensaje que se enviará.
| |
groupAddress:String — La dirección de grupo hacia la que se enruta el mensaje.
|
String — Una propiedad de clase de enumeración NetGroupSendResult que indica si el envío se ha realizado correctamente o si ha fallado.
|
Elementos de API relacionados
sendToNeighbor | () | método |
public function sendToNeighbor(message:Object, sendMode:String):String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Envía un mensaje al elemento colindante especificado por el parámetro sendMode
. Devuelve NetGroupSendResult.SENT
si el mensaje se envió correctamente al destino solicitado.
Para obtener más información sobre los mensajes de enrutamiento, consulte “Route messages directly to a peer” en Flash Media Server Developer’s Guide.
Cuando un nodo recibe un mensaje, se envía un evento NetStatusEvent al detector de eventos de NetGroup con NetGroup.SendTo.Notify
en la propiedad code
del objeto info
.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
message:Object — Mensaje que se enviará.
| |
sendMode:String — Una propiedad de clase de enumeración NetGroupSendMode que especifica el elemento colindante al que se va a enviar el mensaje.
|
String — Una propiedad de clase de enumeración NetGroupSendResult que indica si el envío se ha realizado correctamente o si ha fallado.
|
Elementos de API relacionados
writeRequestedObject | () | método |
public function writeRequestedObject(requestID:int, object:Object):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Cumple la petición tal como se recibió por NetGroup.Replication.Request
de NetStatusEvent para un objeto previamente anunciado con el método addHaveObjects()
. El objeto
puede ser: Object, int, Number y String. El objeto
no puede ser MovieClip.
Para obtener más información sobre duplicación de objetos, consulte “Replicate an object within a group” en Flash Media Server Developer’s Guide.
NOTA: pruebe el evento NetGroup.Neighbor.Connect
antes de llamar a este método.
Parámetros
requestID:int — El identificador de petición tal como se incluye en el evento NetGroup.Replication.Request .
| |
object:Object — El objeto correspondiente al índice dado en el evento NetGroup.Replication.Request .
|
Elementos de API relacionados
netStatus | Evento |
flash.events.NetStatusEvent
propiedad NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 10.1 |
Se distribuye cuando un objeto NetGroup informa sobre su estado o situación de error. El evento netStatus
contiene una propiedad info
. El evento incluye una propiedad info
que contiene información sobre el evento, por ejemplo, si el intento de conexión se realizó correctamente o si falló.
type
de un objeto de evento netStatus
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
info | Un objeto con propiedades que describen el estado del objeto o la situación de error. |
target | El objeto NetConnection o NetStream que informa sobre su estado. |
Elementos de API relacionados
Cuando se ejecuta la aplicación, puede introducir cualquier nombre de grupo en el campo de entrada de texto. La clase GroupSpecifier utiliza el nombre (junto con las propiedades GroupSpecifier que se hayan definido) para crear una cadena que es el nombre exclusivo indefinido del grupo. Para conectar con otro cliente al grupo, el cliente debe utilizar el mismo nombre de grupo. Por ejemplo, si el cliente A utiliza el nombre de grupo "malla", otros clientes que quieran comunicarse con el cliente A también deberán utilizar el nombre de grupo "malla". Si el cliente B utiliza el nombre del grupo "cometa", se conectará correctamente, pero que no creará un nuevo grupo y no podrá comunicarse con el cliente A ni con ningún miembro del grupo "malla".
<?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:12 PM Z