Leitura de texto e dados binários com fluxos legíveis Node. js Este tutorial irá explicar o uso ea criação de fluxos read. js readable: Informações de versão Autor: Jeff Barczewski Publicado em: 3 de agosto de 2013 Tags: nodejs, streams Nível: Intermediário Pré-requisitos: crypto, Eventos, instale os módulos npm Node. js v0.10 (o mais recente estável é v0.10.15 até à data desta escrita), mas os córregos foram geralmente uma parte de Node. js de seus dias cedo Streams2 pode ser usado com versões mais velhas do nó usando Npm módulo readable-stream Consumindo ou usando fluxos legíveis Exemplo simples de leitura de um arquivo e ecoando para stdout: Criando um sha1 digest de um arquivo e ecoando o resultado para stdout (semelhante ao shasum): O evento de dados é disparado no fluxo legível Para cada pedaço de dados, para que você atualizar o digest com para cada pedaço como você vai, então finalmente o evento final é acionado quando o fluxo terminou para que você possa produzir o resultado final. Note que cada vez que você chama. on () para registrar um ouvinte ele retorna o fluxo original para que você possa encadear métodos facilmente. Com Node. js 0.10 existe uma maneira melhor de consumir fluxos. A interface Readable facilita o trabalho com fluxos, especialmente os fluxos onde você deseja fazer outras coisas entre criar um fluxo e usar o fluxo. Esses fluxos Readable mais recentes são pull streams onde você solicita os dados quando você é lido para ele, em vez de ter os dados empurrados para você. A chave para entender este exemplo é que com a nova interface de leitura de streams2, um evento legível será emitido assim que os dados estiverem disponíveis para serem lidos e você pode chamar. read () para ler pedaços dela. Uma vez que não há mais dados disponíveis. Read () retorna null, mas então outro evento legível é acionado novamente quando os dados estiverem disponíveis novamente. Isso continua até o final do arquivo quando final é acionado como antes. Produzindo um fluxo legível Para usar fluxos com o sistema de arquivos ou de http, você pode usar os métodos core fs e http para construir um fluxo, mas como você criaria seu próprio fluxo e o preencheria com dados. Isso pode ser dados de um banco de dados ou De qualquer número de fontes. Aqui está um exemplo de criação de um fluxo legível que é gerado a partir de dados binários aleatórios, em seguida, hash como antes. Isso seria útil na criação de fluxos para testes: Nota: depois de ler () é chamado, devemos continuar lendo até terminar ou até push () retornar false. Usando Streams2 com versões mais antigas do Node. js Se você quiser fazer com que este código funcione com o Node. js mais antigo que 0.10, você pode incluir uma dependência para readable-stream em seu pacote. json e alterar a linha 5 para ler: Fluxo legível se Node. js versão é 0.10 e se não, então ele irá carregar o módulo polyfill readable-stream e usá-lo a partir daí. Pausa / retomar do stream e do Streams2 Uma vez que os fluxos podem fornecer dados mais rapidamente do que um aplicativo pode consumi-lo, os fluxos incluem a capacidade de pausar e os dados são armazenados em buffer até que o fluxo seja retomado. Antes dos streams2, você precisaria prestar muita atenção aos métodos de pausa e retomada, bem como o buffer dos dados até ser retomado. No entanto, a opção Readable de streams2 (Node. js 0.10 ou através do pacote readable-stream) implementa que a funcionalidade para você e os streams são pausados automaticamente até que. read () seja chamado. Você também pode envolver fluxos antigos com uma legível para implementar a nova interface no fluxo antigo: Outra situação em que você precisa se preocupar com pausa e currículo é se o seu código de consumo usa a interface de estilo push antigo chamada. on (39data39, ouvinte). Isso coloca o fluxo no modo de compatibilidade com versões anteriores e você precisaria chamar. pause () e. resume () para controlar a taxa de dados que chegam à sua aplicação. Consulte os documentos da API do Stream para obter detalhes se você estiver usando a interface mais antiga no seu código. Fluxos de objetos Inicialmente, quando os fluxos foram introduzidos, a API oficial indicava que os pedaços de dados sendo transmitidos seriam Buffers ou strings, porém muitos usuários descobriram que era ótimo poder transmitir objetos também. Streams2 no Node. js 0.10 adicionou um modo de objeto a fluxos para formalizar como isso deve funcionar. Quando no modo de objeto. Read (n) simplesmente retorna o próximo objeto (ignorando o n). Para alternar um fluxo em modo de objeto, defina a propriedade objectMode como true nas opções usadas para criar o fluxo Readable. Assim, você pode usar objetos em fluxos tão facilmente quanto você pode usar Buffers e strings, mas a única limitação é que os objetos que você Pass não pode ser nulo uma vez que irá indicar que o fluxo foi encerrado. Node. js fluxos legíveis são flexíveis e simples Node. js legível fluxos são fáceis de consumir e até mesmo simples de construir. Você não pode apenas transmitir dados binários e de seqüência de caracteres, mas também objetos e ainda aproveitar a funcionalidade de fluxo. Espero que tenha gostado desta rápida visita a riachos legíveis, deixe-me saber se tiver alguma dúvida. Para leitura adicional Siga-me Compartilhar esta página
No comments:
Post a Comment