🔌Socket

ATENÇÃO!

Proibido prosseguir sem antes entender os conceitos que combinamos lá na Introdução!

Agora que você já tem em mente como funciona a base de uma aplicação HTTP pelo Node, vamos juntar todos estes conceitos e aplicá-lo ao SOCKET e como ele irá interferir na nossa aplicação

O que é?

O Socket.io é uma biblioteca que simplifica a comunicação bidirecional em tempo real entre servidores e clientes. Ele foi projetado para superar as limitações da comunicação HTTP tradicional, que é principalmente unidirecional (do servidor para o cliente) e baseada em solicitações.

Como funciona?

O Socket opera com base em dois componentes principais: o servidor (backend) e o cliente (front-end).

Back-end

Configuração do Servidor Socket

Você configura um servidor Socket em seu backend usando uma linguagem de programação compatível, como Node.js neste caso. Isso cria um ponto de extremidade para a comunicação em tempo real.

const express = require('express');>
const app = express( );
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);

app.get('/', (req, res) => {
ㅤres.sendFile(__dirname + '/index.html');
});

server.listen(3000, ( ) => {
ㅤconsole.log('listening on *:3000');
});

Gestão de Conexões

O servidor Socket gerencia conexões de cliente e mantém uma lista de clientes conectados. Cada conexão é identificada por um ID exclusivo.

socket.id

Emissão de Eventos

O servidor pode emitir eventos para clientes específicos ou para todos os clientes conectados. Esses eventos podem conter dados, mensagens ou atualizações em tempo real.

socket.emit('mensagem', 'Como eu adoro a aula de redes!😁')

No exemplo acima, o socket está emitindo um evento chamado mensagem e todos que estiverem preparados para receber o evento mensagem, também receberão seu conteúdo.

Front-end

Configuração do Cliente Socket

Você inclui a biblioteca Socket no código do cliente (geralmente JavaScript) para estabelecer uma conexão com o servidor Socket.

<script src="/socket.io/socket.io.js"></script> 
<script>
ㅤvar socket = io( );
</script>

Esta simples configuração, já é o suficiente para habilitar seu Client para receber e emitir eventos através socket.

Escuta de eventos

Lembra quando emitimos o evento message no servidor?

O Client é capaz de receber a mensagem através deste simples código:

socket.on('mensagem', (mensagemRecebida) => {
    console.log('Mensagem recebida do servidor: ', mensagemRecebida)
})

Ele irá receber o evento mensagem e salvar o conteúdo enviado em uma variável chamada mensagemRecebida, em seguida será mostrado o seguinte resultado no console do Client:

Mensagem recebida do servidor: Como eu adoro a aula de redes!😁

Emissão de Eventos

Assim como o servidor, o client também consegue fazer a emissão de eventos, da mesma maneira do servidor, permitindo que ele envie dados ou solicite informações específicas.

Conclusão

Viu como é simples, jovem padawan!?

Espero que você tenha entendido o conceito por trás do Socket e que sua mente tenha lhe trazido diversas ideias de aplicação com esta ferramenta incrível!

Deixarei também duas sugestões de leitura que foram implementadas neste projeto e que são fundamentais no desenvolvimento web atualmente, são eles: SSL e TSL. Que são dois protocolos de segurança IMPORTANTÍSSIMOS. Nos vemos em breve! 😉

Last updated