Criando um socket server simples com NodeJS

Desenvolvedores de software eventualmente estão envolvidos com algum tipo de solução baseada em socket, principalmente utilizando um cliente para conexão com um server socket.

Com o objetivo de criar um server socket simples, criei um servidor utilizando o NodeJS que me auxilia quando desejo visualizar as mensagens disparadas pelo cliente que estou desenvolvendo e como essa mensagem esta sendo recebida no servidor.

Caso queira conhecer mais sobre o NodeJS, veja o post sobre como acessar comandos do linux usando NodeJS.

Partindo do princípio que o NodeJS esta instalado ( o mesmo pode ser baixado aqui ). Será preciso criar dois arquivos:

1 – Um arquivo javascript (.JS) que contém a lógica do server.

Exemplo de código

// Load the TCP Library
net = require(‘net’);

//Porta para conexao
var porta = 29298;

// Lista de clientes
var clientes = [];

// Inicia o TCP Server
net.createServer(function (socket) {
// Identifica o socket
socket.name = socket.remoteAddress + “:” + socket.remotePort

// Adiciona o socket a lista de clientes
clientes.push(socket);

// Envia uma mensagem de conexao
socket.write(“Cliente ” + socket.name + ” conectado com sucesso\n”);

// Avisa aos demais clientes que um novo cliente foi conectado
broadcast(socket.name + ” conectado\n”, socket);

// Listener de requisicoes dos clientes
socket.on(‘data’, function (data) {
broadcast(data,socket);
});

// Trata a desconexao do cliente
socket.on(‘end’, function () {
clientes.splice(clientes.indexOf(socket), 1);
broadcast(socket.name + ” Desconectou\n”);
});

// Trata possiveis erros na conexao
socket.on(“error”, function () {
console.log(“\n Cliente desconectao por erro “);
clientes.splice(clientes.indexOf(socket), 1);
});

// Envia mensagem para todos os clientes
function broadcast(message, sender) {
clientes.forEach(function (cliente) {
// Tratamento para nao enviar a mesma mensagem a quem originou
if (cliente === sender) return;
cliente.write(message);
});
// Envia a mensagem na console
process.stdout.write(message)
}

}).listen(porta);

// Informa na console que o servidor esta em operacao.
console.log(“Servidor em execucao na porta :”+porta+”\n”);

socketServer.js

2 – Um arquivo para o iniciar o nodeJS, sem a necessidade de digitar. Podendo ser um arquivo .bat ou um shell script com o comando abaixo.

node socketServer.js

Exemplo de execução do socket server
Exemplo de execução do socket server

Até!

Deixe uma resposta