Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Projeto Soft...
Tela cheia Sugerir um artigo

AJ Alves: net.js – Um pacote Node.JS para trabalhar com TCP

11 de Setembro de 2012, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 57 vezes

TCP de (Transmission Control Protocol) é um protocolo robusto e eficiente da quarta camada do modelo OSI, a camada de transporte, e sobre qual a maioria dos serviços aos quais a internet está montada como o SSH, FTP e o HTTP. Tornou-se apropriado para a grande rede por se tratar de um protocolo que verifica se os dados estão sendo enviados da forma correta, na sequência,  e sem erros.

net.js é um pacote que integra o core do framework Node.JS, foi e é especificamente desenvolvido e aprimorado para trabalhar com conexões TCP utilizando Javascript. Vou explicar o uso deste pacote através da criação de um Chat que será acessado via terminal com uso de um protocolo de aplicação, como por exemplo o TELNET, um dos protocolos que utiliza o TCP como protocolo de transporte.

// Instanciar o pacote para trabalhar com o TCP, o "net.js"var net = require("net");

// Criando um array para guardar todos os clientes "sockets" conectadosvar listaClientes = [];var ids = 0

// Criando um servidor a partir de um objeto "net" var servidor =  net.createServer(function(cliente){ // Adicionando todos os clientes que se conectarem ao servidor ao array listaClientes cliente.id = ids++ listaClientes.push(cliente);

 // Enviando uma mensgem aos clientes que acabam de se conectar cliente.write("Bem vindo ao Chat!\n");

 // Evento acionado sempre que um cliente conecta-se ao servidor cliente.on("connect", function(){  //imprimindo no servidor o id do cliente conectado  console.log(cliente.id+" conectado!"); });

 // Evento acionado sempre que alguém envia dados ao servidor cliente.on("data", function(dados){  // Cirando um mecanismo de logout  if(String(dados).match(/sair/)){   //Desconectando o cliente   cliente.end();  }  // Implementação de um broadcast  for(var i=0; i < listaClientes.length; i++){   // Impedindo que um dado seja enviado para quem o enviou   if(listaClientes[i] == cliente){    continue;   }   // Enviando o dado para o referido cliente na posição i do array   listaClientes[i].write(dados);  } });

 // Evento acionado sempre que um cliente desconecta-se do servidor cliente.on("end", function(){  //achando a posição do cliente que desconectou no array  var i = listaClientes.indexOf(cliente);  //retirando o cliente da lista  listaClientes.splice(i, 1);  //imprimindo uma mensagem que o cliente com este id desconectou-se  console.log(cliente.id+" desconectado!"); });});

//configurando a porta a qual este servidor deve ficar escutandoservidor.listen(8000);

//imprimindo um aviso que o servidor está rodandoconsole.log("Servidor TCP conectado em 127.0.0.1 porta 8000, aguardando conexões!!!");

Como destaque no código temos:

// Criar uma instância do pacotevar net = require("net");

// Criar um servidor a partir do objeto net// Note que o parametro do calback "cliente" será o objeto recipiente de cada usuário que se conectar ao chatvar servidor =  net.createServer(function(cliente){});

Outros pontos importantes são, os handlers de eventos do objeto net.

// Evento acionado sempre que um cliente conecta-se ao servidorcliente.on("connect", function(){});

// Evento acionado sempre que alguém envia dados ao servidor// Note que o parametro "dados" é o recipiente de cada mensagem do respectivo usuáriocliente.on("data", function(dados){});

// Evento acionado sempre que um cliente desconecta-se do servidorcliente.on("end", function(){});

Por fim, basta configurar em qual porta o servidor deverá ficar escutando por conexões

//configurando a porta a qual este servidor deve ficar escutandoservidor.listen(8000);

Com esses métodos e ajuda do método .write(dados) do objeto client, que serve para enviar mensagens para o cliente em questão. Implementei um sistema de broadcast e de desconexão para o chat, agora, fiquem a vontade para aprimorar o código como melhor lhes servires.

Para brincar com o Chat

Abra o terminal ou algum programa grafico que manipule o TELNET e configure:
  
Host: localhost or 127.0.0.1 na  Porta: 8000

comando: > telnet localhost 8000 


Fonte: http://www.zerokol.com/2012/09/netjs-um-pacote-nodejs-para-trabalhar.html

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.