Pacote | flash.net |
Classe | public class NetGroup |
Herança | NetGroup EventDispatcher Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
-
Monitorar a Qualidade do Serviço. A propriedade
info
contém um objeto NetGroupInfo cujas propriedades fornecem a estatística de Qualidade do Serviço deste grupo. -
Publicação. Invoque
post()
para transmitir mensagens do ActionScript a todos os membros de um grupo. -
Roteamento direto. Invoque
sendToNearest ()
,sendToNeighbor()
esendToAllNeighbors()
para enviar uma mensagem de dados curta para um membro específico de um grupo ponto a ponto. A origem e o destino não precisam ter uma conexão direta. -
Réplica de objeto . Invoque
addHaveObjects()
,removeHaveObjects()
,addWantObjects()
,removeWantObjects()
,writeRequestedObject()
edenyRequestedObject()
para fragmentar dados grandes e replicálos para todos os nós em um grupo ponto a ponto.
Na classe NetGroup do lado do cliente, o NetConnection envia os seguintes eventos:
- NetGroup.Conecct.Success
- NetGroup.Connect.Failed
- NetGroup.Connect.Rejected
A propriedade info.group
do objeto do evento contém uma referência à origem do evento (o NetGroup). O NetGroup envia todos os outros eventos. Na classe NetGroup do lado do servidor, o NetConnection envia os seguintes eventos:
Para obter informações sobre como usar grupos em rede assistida por par, consulte Experiências de Mídia Sociais com Flash Media e RTMFP, também por Tom Krcha.
Para obter informações sobre os detalhes técnicos da rede assistida por par, consulte P2P no Flash Platform com RTMFP pelo cientista da computação da Adobe Matthew Kaufman.
Elementos da API relacionados
flash.net.NetStream
Valores flash.events.NetStatusEventinfo.code que iniciam com "NetGroup".
Propriedade | Definido por | ||
---|---|---|---|
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
estimatedMemberCount : Number [somente leitura]
Especifica o número de membros estimado do grupo, com base na densidade da vizinhança local e na suposição de uma distribuição uniforme de endereços de grupo. | NetGroup | ||
info : NetGroupInfo [somente leitura]
Retorna um objeto de NetGroupInfo cujas propriedades fornecem a estatística de Qualidade de Serviço relacionada ao transporte de dados ponto a ponto RTMFP deste NetGroup. | NetGroup | ||
localCoverageFrom : String [somente leitura]
Especifica a partida do intervalo de endereços de grupo pelos quais este nó é "o mais próximo" e responsável. | NetGroup | ||
localCoverageTo : String [somente leitura]
Especifica o fim do intervalo de endereços de grupo pelos quais este nó é "o mais próximo" e responsável. | NetGroup | ||
neighborCount : Number [somente leitura]
Especifica o número de membros do grupo aos quais este nó é diretamente conectado. | NetGroup | ||
receiveMode : String
Especifica que o encaminhamento deste nó recebe o modo como um dos valores na classe NetGroupReceiveMode enum. | NetGroup | ||
replicationStrategy : String
Especifica a estratégia de busca de replicação de objeto. | NetGroup |
Método | Definido por | ||
---|---|---|---|
Constrói um NetGroup no objeto NetConnection especificado e junta-o ao Grupo especificado por groupspec. | NetGroup | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | EventDispatcher | ||
Adiciona objetos de startIndex a endIndex ao conjunto de objetos que este nó anuncia aos vizinhos como objetos para os quais ele atenderá as solicitações. | NetGroup | ||
Adiciona manualmente um registro que especifica que peerID é membro do Grupo. | NetGroup | ||
Adiciona manualmente um vizinho conectando-se imediata e diretamente à peerID especificada, que já deve estar neste grupo. | NetGroup | ||
Adiciona objetos de startIndex a endIndex ao conjunto de objetos a ser recuperado. | NetGroup | ||
Desconecte do grupo e feche este NetGroup. | NetGroup | ||
Converte um peerID a um endereço de grupo conveniente para o uso com o método sendToNearest(). | NetGroup | ||
Nega uma solicitação recebida em NetStatusEvent NetGroup.Replication.Request para um objeto anteriormente anunciado com addHaveObjects(). | NetGroup | ||
Envia um evento para o fluxo de eventos. | EventDispatcher | ||
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | EventDispatcher | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Envia uma mensagem para todos os membros de um grupo. | NetGroup | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Remove um ouvinte do objeto EventDispatcher. | EventDispatcher | ||
Remove objetos de startIndex a endIndex ao conjunto de objetos que este nó anuncia aos vizinhos como objetos para os quais atenderá as solicitações. | NetGroup | ||
Remove objetos de startIndex a endIndex do conjunto de objetos a ser recuperado. | NetGroup | ||
Envia uma mensagem a todos os vizinhos. | NetGroup | ||
Envia uma mensagem ao vizinho (ou nó local) mais próximo ao groupAddress especificado. | NetGroup | ||
Envia uma mensagem ao vizinho especificado pelo parâmetro sendMode. | NetGroup | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object | ||
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | EventDispatcher | ||
Satisfaz a solicitação como recebido pelo NetStatusEventNetGroup.Replication.Request para um objeto anteriormente anunciado com o método addHaveObjects(). | NetGroup |
Evento | Resumo | Definido por | ||
---|---|---|---|---|
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR ganha o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR perde o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando um objeto NetGroup está relatando seu status ou uma condição de erro. | NetGroup |
estimatedMemberCount | propriedade |
estimatedMemberCount:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica o número de membros estimado do grupo, com base na densidade da vizinhança local e na suposição de uma distribuição uniforme de endereços de grupo.
Implementação
public function get estimatedMemberCount():Number
Elementos da API relacionados
info | propriedade |
info:NetGroupInfo
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Retorna um objeto de NetGroupInfo cujas propriedades fornecem a estatística de Qualidade de Serviço relacionada ao transporte de dados ponto a ponto RTMFP deste NetGroup.
Implementação
public function get info():NetGroupInfo
Elementos da API relacionados
localCoverageFrom | propriedade |
localCoverageFrom:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica a partida do intervalo de endereços de grupo pelos quais este nó é "o mais próximo" e responsável. O intervalo é especificado na direção crescente ao longo do mod de anel de endereço de grupo 2256.
Implementação
public function get localCoverageFrom():String
Elementos da API relacionados
localCoverageTo | propriedade |
localCoverageTo:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica o fim do intervalo de endereços de grupo pelos quais este nó é "o mais próximo" e responsável. O intervalo é especificado na direção crescente ao longo do mod de anel de endereço de grupo 2256.
Implementação
public function get localCoverageTo():String
Elementos da API relacionados
neighborCount | propriedade |
receiveMode | propriedade |
receiveMode:String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica que o encaminhamento deste nó recebe o modo como um dos valores na classe NetGroupReceiveMode enum.
Implementação
public function get receiveMode():String
public function set receiveMode(value:String):void
Elementos da API relacionados
replicationStrategy | propriedade |
replicationStrategy:String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Especifica a estratégia de busca de replicação de objeto. O valor é um dos valores enumerados na classe NetGroupReplicationStrategy.
Implementação
public function get replicationStrategy():String
public function set replicationStrategy(value:String):void
Elementos da API relacionados
NetGroup | () | Construtor |
public function NetGroup(connection:NetConnection, groupspec:String)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Constrói um NetGroup no objeto NetConnection especificado e junta-o ao grupo especificado pelo groupspec
Na maioria dos casos, a groupspec
tem o potencial para usar o uplink de rede no sistema local. Quando um objeto NetGroup ou NetStream é construído com um groupspec, o Flash Player exibe uma caixa de diálogo Privacidade. A caixa de diálogo pergunta se o Flash Player pode usar a conexão para compartilhar dados com pares de um usuário. Se o usuário clicar em "Permitir para este domínio", a caixa de diálogo não será exibida na próxima vez que o usuário se conectar a este aplicativo. Se um usuário não permitir a ligação em rede assistida pelo par, todos os recursos do par dentro do grupo (nomeação, roteamento dirigido, réplica de objeto e multicast) serão desativados. Se a permissão for concedida, um evento NetStatusEvent será despachado ao ouvinte de evento do NetConnection com NetGroup.Connect.Success
na propriedade code
do objeto info
. Se a permissão for negada, a propriedade code
será NetGroup.Connect.Rejected
. Até um evento NetGroup.Connect.Success
ser recebido, uma exceção será lançada se você tentar invocar algum método do objeto NetGroup.
Observação: Quando um cliente assina para um fluxo multicast de IP nativo, a caixa de diálogo de segurança não é exibida.
Parâmetrosconnection:NetConnection — Um objeto NetConnection.
| |
groupspec:String — Uma string que especifica o grupo ponto a ponto RTMFP para fazer a junção, inclusive do seu nome, capacidades, restrições e das autorizações deste membro.
new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); |
Lança
ArgumentError — A ocorrência de NetConnection não está conectada.
| |
Error — O groupspec é inválido.
|
Elementos da API relacionados
addHaveObjects | () | método |
public function addHaveObjects(startIndex:Number, endIndex:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Adiciona objetos de startIndex
a endIndex
ao conjunto de objetos que este nó anuncia aos vizinhos como objetos para os quais ele atenderá as solicitações. Por padrão, o conjunto Have está vazio. Os índices devem ser números inteiros de 0 a 9007199254740992.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
Este método envia um NetStatusEvent ao ouvinte de evento do NetGroup com NetGroup.Replication.Request
na propriedade code
do objeto info
.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
startIndex:Number — O começo do intervalo de índices de objeto a adicionar ao conjunto Have.
| |
endIndex:Number — O fim do intervalo de índices de objeto para adicionar ao conjunto Have.
|
Lança
RangeError — Um número passado para este método é menor que 0 ou maior que 9007199254740992.
|
Elementos da API relacionados
addMemberHint | () | método |
public function addMemberHint(peerID:String):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Adiciona manualmente um registro que especifica que peerID
é membro do Grupo. Uma conexão imediata a ele é tentada só se for necessário para a topologia.
Parâmetros
peerID:String — O peerID a ser adicionado ao grupo de vizinhos potenciais.
|
Boolean — TRUE para êxito, FALSE para falha.
|
Elementos da API relacionados
addNeighbor | () | método |
public function addNeighbor(peerID:String):Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Adiciona manualmente um vizinho conectando-se imediata e diretamente à peerID
especificada, que já deve estar neste grupo. Esta conexão direta pode ser cancelada depois se ela não for necessária para a topologia.
Parâmetros
peerID:String — O peerID ao qual conectar-se imediatamente.
|
Boolean — TRUE para êxito, FALSE para falha.
|
Elementos da API relacionados
addWantObjects | () | método |
public function addWantObjects(startIndex:Number, endIndex:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Adiciona objetos de startIndex
a endIndex
ao conjunto de objetos a ser recuperado. Os índices devem ser números inteiros de 0 a 9007199254740992. Por padrão, o conjunto Want está vazio.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
Este método envia um NetStatusEvent ao ouvinte de evento do NetGroup com NetGroup.Replication.Fetch.SendNotify
na propriedade info.code
. Este evento é seguido por um evento NetGroup.Replication.Fetch.Failed
ou NetGroup.Replication.Fetch. Result
.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
startIndex:Number — O começo do intervalo de índices de objeto a adicionar ao conjunto Want.
| |
endIndex:Number — O fim do intervalo de índices de objeto a adicionar ao conjunto Want.
|
Lança
RangeError — Um número passado para este método é menor que 0 ou maior que 9007199254740992.
|
Elementos da API relacionados
close | () | método |
public function close():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Desconecte do grupo e feche este NetGroup. Este NetGroup não é usável depois de invocar este método.
convertPeerIDToGroupAddress | () | método |
public function convertPeerIDToGroupAddress(peerID:String):String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Converte um peerID a um endereço de grupo conveniente para o uso com o método sendToNearest()
.
Parâmetros
peerID:String — O peerID a ser convertido.
|
String — O endereço de grupo do peerID.
|
Elementos da API relacionados
denyRequestedObject | () | método |
public function denyRequestedObject(requestID:int):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Nega uma solicitação recebida em NetStatusEvent NetGroup.Replication.Request
para um objeto anteriormente anunciado com addHaveObjects()
. O solicitante pode solicitar este objeto novamente, a menos que ou até que seja retirado do conjunto Have.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
requestID:int — O identificador de solicitação, conforme dado no evento NetGroup.Replication.Request.
|
Elementos da API relacionados
post | () | método |
public function post(message:Object):String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Envia uma mensagem para todos os membros de um grupo. Para invocar este método, a propriedade GroupSpecifier.postingEnabled
deve ser true
no groupspec passado para o construtor NetGroup. Para obter mais informações, consulte "Post messages to a group" no Flash Media Server Developer’s Guide.
Todas as mensagens devem ser exclusivas; uma mensagem idêntica a uma postada antes pode não ser propagada. Use um número de sequência para tornar as mensagens exclusivas.
A entrega de mensagem não é encomendada. A entrega de mensagem não é garantida.
As mensagens são serializadas em AMF. A mensagem pode ser de um dos seguintes tipos: um objeto, um número inteiro, um número ou uma string. A mensagem não pode ser um MovieClip.
Este método envia um NetStatusEvent ao ouvinte de evento do NetGroup com NetGroup.Replication.Fetch.SendNotify
na propriedade info.code
. O evento NetGroup.Posting.Notify
é despachado ao NetGroup tanto no cliente quanto no servidor.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
message:Object — A mensagem para enviar a todos outros membros do grupo.
|
String — O messageID da mensagem se postado ou null em caso de erro. O messageID é o hexadecimal do SHA256 dos bytes não processados da serialização da mensagem.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
Quando você executa o aplicativo, pode inserir qualquer nome de grupo no campo de entrada de texto. A classe GroupSpecifier usa o nome (junto com qualquer propriedade GroupSpecifier que você estabeleceu) para criar uma strings que é o nome perpetuamente exclusivo do grupo. Para conectar outro cliente ao grupo, esse cliente deverá usar o mesmo nome do grupo. Por exemplo, se o cliente A usar o nome de grupo "firstmesh", outros clientes que quiserem se comunicar com o cliente A também deverão usar o nome de grupo "firstmesh". Se o cliente B usar o nome do grupo "pipe", ele se conectará com êxito, mas criará um novo grupo e não será capaz de se comunicar com o cliente A ou com qualquer um no grupo "firstmesh".
Para executar este exemplo, adicione um componente Button, Label, TextInput e TextArea à Biblioteca no 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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Remove objetos de startIndex
a endIndex
ao conjunto de objetos que este nó anuncia aos vizinhos como objetos para os quais atenderá as solicitações. Os índices devem ser números inteiros de 0 a 9007199254740992.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
startIndex:Number — O começo do intervalo de índices de objeto a remover do conjunto Have.
| |
endIndex:Number — O fim do intervalo de índices de objeto a remover do conjunto Have.
|
Lança
RangeError — Um número passado para este método é menor que 0 ou maior que 9007199254740992.
|
Elementos da API relacionados
removeWantObjects | () | método |
public function removeWantObjects(startIndex:Number, endIndex:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Remove objetos de startIndex
a endIndex
do conjunto de objetos a ser recuperado. Os índices devem ser números inteiros de 0 a 9007199254740992.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
startIndex:Number — O começo do intervalo de índices de objeto a remover do conjunto Want.
| |
endIndex:Number — O fim do intervalo de índices de objeto a remover do conjunto Want.
|
Lança
RangeError — Um número passado para este método é menor que 0 ou maior que 9007199254740992.
|
Elementos da API relacionados
sendToAllNeighbors | () | método |
public function sendToAllNeighbors(message:Object):String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Envia uma mensagem a todos os vizinhos. Retorna NetGroupSendResult.SENT
se pelo menos um vizinho foi selecionado.
Para obter mais informações sobre o roteamento de mensagens, consulte "Route messages directly to a peer" no Flash Media Server Developer’s Guide.
Quando um nó recebe uma mensagem, um NetStatusEvent é despachado ao ouvinte de evento do NetGroup com NetGroup.SendTo.Notify
na propriedade code
do objeto info
.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
message:Object — A mensagem a enviar.
|
String — Uma propriedade de classe de lista NetGroupSendResult indicando o êxito ou falha de enviar.
|
Elementos da API relacionados
sendToNearest | () | método |
public function sendToNearest(message:Object, groupAddress:String):String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Envia uma mensagem ao vizinho (ou nó local) mais próximo ao groupAddress especificado. Considera vizinhos do ring inteiro. Retorna NetGroupSendResult.SENT
se a mensagem foi enviada com êxito em direção ao seu destino.
Para obter mais informações sobre o roteamento de mensagens, consulte "Route messages directly to a peer" no Flash Media Server Developer’s Guide.
Quando um nó recebe uma mensagem, um NetStatusEvent é despachado ao ouvinte de evento do NetGroup com NetGroup.SendTo.Notify
na propriedade code
do objeto info
.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
message:Object — A mensagem a enviar.
| |
groupAddress:String — O endereço de grupo em direção a qual rotear a mensagem.
|
String — Uma propriedade de classe de lista NetGroupSendResult indicando o êxito ou falha de enviar.
|
Elementos da API relacionados
sendToNeighbor | () | método |
public function sendToNeighbor(message:Object, sendMode:String):String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Envia uma mensagem ao vizinho especificado pelo parâmetro sendMode
. Retorna NetGroupSendResult.SENT
se a mensagem foi enviada com êxito ao destino solicitado.
Para obter mais informações sobre o roteamento de mensagens, consulte "Route messages directly to a peer" no Flash Media Server Developer’s Guide.
Quando um nó recebe uma mensagem, um NetStatusEvent é despachado ao ouvinte de evento do NetGroup com NetGroup.SendTo.Notify
na propriedade code
do objeto info
.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
message:Object — A mensagem a enviar.
| |
sendMode:String — Uma propriedade da classe de lista NetGroupSendMode que especifica o vizinho ao qual enviar a mensagem.
|
String — Uma propriedade de classe de lista NetGroupSendResult indicando o êxito ou falha de enviar.
|
Elementos da API relacionados
writeRequestedObject | () | método |
public function writeRequestedObject(requestID:int, object:Object):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Satisfaz a solicitação como recebido por NetStatusEvent NetGroup.Replication.Request
para um objeto anteriormente anunciado com o método addHaveObjects()
. O object
pode ser um dos seguintes: um objeto, um inteiro, um número e uma string. O object
não pode ser um MovieClip.
Para obter mais informações sobre a replicação de objetos, consulte "Replicate an object within a group" no Flash Media Server Developer’s Guide.
NOTA: teste o evento NetGroup.Neighbor.Connect
antes de chamar este método.
Parâmetros
requestID:int — O identificador de solicitação, conforme dado no evento NetGroup.Replication.Request.
| |
object:Object — O objeto correspondente ao índice dado no evento NetGroup.Replication.Request. .
|
Elementos da API relacionados
netStatus | Evento |
flash.events.NetStatusEvent
propriedade NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 10.1 |
Despachado quando um objeto NetGroup está relatando seu status ou uma condição de erro. O evento netStatus
contém uma propriedade info
. A propriedade info
é um objeto de informações que contém informações específicas sobre o evento; por exemplo, se uma tentativa de conexão foi bem-sucedida ou se falhou.
type
de um objeto de evento netStatus
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
info | Um objeto com propriedades que descrevem o status ou condição de erro do objeto. |
target | O objeto NetConnection ou o NetStream reportando o respectivo status. |
Elementos da API relacionados
Quando você executa o aplicativo, pode inserir qualquer nome de grupo no campo de entrada de texto. A classe GroupSpecifier usa o nome (junto com qualquer propriedade GroupSpecifier que você estabeleceu) para criar uma strings que é o nome perpetuamente exclusivo do grupo. Para conectar outro cliente ao grupo, esse cliente deverá usar o mesmo nome do grupo. Por exemplo, se o cliente A usar o nome de grupo "firstmesh", outros clientes que quiserem se comunicar com o cliente A também deverão usar o nome de grupo "firstmesh". Se o cliente B usar o nome do grupo "pipe", ele se conectará com êxito, mas criará um novo grupo e não será capaz de se comunicar com o cliente A ou com qualquer um no grupo "firstmesh".
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="OnApplicationComplete()"> <mx:Script> <![CDATA[ private var netConnection:NetConnection = null; private var netStream:NetStream = null; private var netGroup:NetGroup = null; private var video:Video = null; private var sequenceNumber:uint = 0; private var resizeTimer:Timer = null; private const SERVER:String = "rtmfp://fms.example.com/someapp"; [Bindable] private var connected:Boolean = false; [Bindable] private var joinedGroup:Boolean = false; private function OnApplicationComplete():void { userName.text = "user " + int(Math.random() * 65536); groupName.text = "channel" + (int(Math.random() * 899) + 101); resizeTimer = new Timer(2000.0); resizeTimer.addEventListener(TimerEvent.TIMER, DoResizeVideo); resizeTimer.start(); } private function StatusMessage(msg:Object):void { statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } private function NetStatusHandler(e:NetStatusEvent):void { StatusMessage(e.info.code); switch(e.info.code) { case "NetConnection.Connect.Success": OnConnect(); break; case "NetConnection.Connect.Closed": case "NetConnection.Connect.Failed": case "NetConnection.Connect.Rejected": case "NetConnection.Connect.AppShutdown": case "NetConnection.Connect.InvalidApp": OnDisconnect(); break; case "NetStream.Connect.Success": // e.info.stream OnNetStreamConnect(); break; case "NetStream.Connect.Rejected": // e.info.stream case "NetStream.Connect.Failed": // e.info.stream DoDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group DoDisconnect(); break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": DoResizeVideo(); break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } private function DoConnect():void { StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netConnection.connect(SERVER); } private function OnConnect():void { var groupSpecifier:GroupSpecifier; StatusMessage("Connected\n"); connected = true; groupSpecifier = new GroupSpecifier("max2009lab/" + groupName.text); groupSpecifier.multicastEnabled = true; groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations()); netStream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetStreamConnect():void { netStream.client = this; var mic:Microphone = Microphone.getMicrophone(); if(mic) { mic.codec = SoundCodec.SPEEX; mic.setSilenceLevel(0); netStream.attachAudio(mic); StatusMessage("got microphone\n"); } var camera:Camera = Camera.getCamera(); if(camera) { camera.setMode(320, 240, 10); camera.setQuality(30000, 0); camera.setKeyFrameInterval(15); videoDisplay.attachCamera(camera); videoDisplay.maintainAspectRatio = true; netStream.attachCamera(camera); StatusMessage("got camera\n"); } netStream.publish("stream"); } private function OnNetGroupConnect():void { joinedGroup = true; } private function DoDisconnect():void { if(netConnection) netConnection.close(); videoDisplay.attachCamera(null); } private function OnDisconnect():void { StatusMessage("Disconnected\n"); netConnection = null; netStream = null; netGroup = null; connected = false; joinedGroup = false; } private function ClearChatText():void { chatText.text = ""; } private function DoPost():void { var message:Object = new Object; message.user = userName.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); chatText.callLater(ClearChatText); } private function OnPosting(message:Object):void { StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoResizeVideo(ignored:* = null):void { if(video) { if( (0 == video.videoHeight) || (0 == video.videoWidth) ) { video.height = videoDisplay.height; video.width = videoDisplay.width; video.x = 0; video.y = 0; } else { var videoAspect:Number = Number(video.videoWidth) / Number(video.videoHeight); var displayAspect:Number = Number(videoDisplay.width) / Number(videoDisplay.height); var adjustFactor:Number; if(videoAspect >= displayAspect) // video is wider than display { adjustFactor = Number(video.videoWidth) / Number(videoDisplay.width); video.width = videoDisplay.width; video.height = int(Number(video.videoHeight) / adjustFactor); video.x = 0; video.y = int((videoDisplay.height - video.height) / 2); } else { adjustFactor = Number(video.videoHeight) / Number(videoDisplay.height); video.height = videoDisplay.height; video.width = int(Number(video.videoWidth) / adjustFactor); video.x = int((videoDisplay.width - video.width) / 2); video.y = 0; } } } } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} public function ValidateConnectAllowed(isConnected:Boolean, groupNameText:String):Boolean { return (!isConnected) && (groupNameText.length > 0); } ]]> </mx:Script> <mx:VBox top="10" right="10" left="10" bottom="10" verticalGap="6"> <mx:HBox width="100%"> <mx:Text text="Group:"/> <mx:TextInput id="groupName" width="100%" text="default" enabled="{!connected}"/> <mx:Button label="Connect" click="DoConnect()" enabled="{ValidateConnectAllowed(connected, groupName.text)}" /> <mx:Button label="Disconnect" click="DoDisconnect()" enabled="{connected}" /> </mx:HBox> <mx:VideoDisplay id="videoDisplay" width="320" height="240" resize="DoResizeVideo()"/> <mx:TextArea id="statusLog" width="100%" height="100%"/> <mx:HBox width="100%"> <mx:TextInput id="userName" width="160" /> <mx:TextInput id="chatText" width="100%" enabled="{joinedGroup}" enter="DoPost()"/> </mx:HBox> </mx:VBox> </mx:Application>
Wed Jun 13 2018, 11:10 AM Z