Como usar o protocolo WSS em Node.js

Como usar o protocolo WSS em Node.js

Aprenda a usar o protocolo WSS (WebSocket Secure) com Node.js, usando conexões seguras em tempo real com o servidor.

📌 Simplifique seu processo de deploy com o nosso painel ICP!

📌 Passo 1: Inicialize um novo projeto Node.js:

Certifique-se de que tem o Node.js instalado e, em seguida, instale o pacote ws:

npm init -y

📌 Passo 2: Instalar Dependências Necessárias

Instale os pacotes express e ws, que serão utilizados para criar o servidor HTTP e o servidor WebSocket, respectivamente:

npm install express ws

📌 Passo 3: Gerar Certificados SSL

Para estabelecer uma conexão segura (WSS), é necessário um certificado SSL. Em ambientes de desenvolvimento, você pode gerar certificados autoassinados:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Isso criará dois arquivos: key.pem (chave privada) e cert.pem (certificado).

📌 Passo 4: Desenvolver o Servidor WSS

Crie um arquivo chamado server.js e adicione o seguinte código:​

const fs = require('fs');
const https = require('https');
const express = require('express');
const WebSocket = require('ws');

const app = express();

// Caminho dos certificados SSL
const serverOptions = {
    key: fs.readFileSync('key.pem'),
    cert: fs.readFileSync('cert.pem')
};

// Criar servidor HTTPS
const server = https.createServer(serverOptions, app);

// Servir arquivos estáticos da pasta public
app.use(express.static(__dirname + '/public'));

// Criar WebSocket Server
const wss = new WebSocket.Server({ server });

// Evento quando um cliente se conecta
wss.on('connection', (ws) => {
    console.log('Novo cliente conectado via WSS');

    ws.on('message', (message) => {
        console.log(`Mensagem recebida: ${message}`);
        ws.send(`Echo: ${message}`);
    });

    ws.on('close', () => console.log('Cliente desconectado'));
});

// Iniciar o servidor na porta 8080
server.listen(8080, () => {
    console.log('Servidor WSS rodando em https://localhost:8080');
});

📌 Passo 5: Criar a Interface do Cliente

Dentro da pasta public, crie um arquivo index.html com o seguinte conteúdo:

<!DOCTYPE html>
<html lang="pt">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Integrator Host</title>
</head>
<body>
    <h2>Integrator Host - Wss Seguro</h2>
    <input type="text" id="message" placeholder="Digite uma mensagem">
    <button onclick="sendMessage()">Enviar</button>
    <div id="output"></div>

    <script>
        const ws = new WebSocket("wss://localhost:8080");

        ws.onopen = () => {
            document.getElementById("output").innerHTML += "<p>Conectado ao Wss!</p>";
        };

        ws.onmessage = (event) => {
            document.getElementById("output").innerHTML += `<p>Servidor: ${event.data}</p>`;
        };

        ws.onerror = (error) => {
            document.getElementById("output").innerHTML += `<p style="color: red;">Erro na conexão Wss!</p>`;
            console.error("Erro Wss:", error);
        };

        ws.onclose = () => {
            document.getElementById("output").innerHTML += `<p style="color: red;">Conexão encerrada!</p>`;
        };

        function sendMessage() {
            const message = document.getElementById("message").value;
            if (ws.readyState === WebSocket.OPEN) {
                ws.send(message);
            } else {
                document.getElementById("output").innerHTML += `<p style="color: red;">Conexão WebSocket fechada!</p>`;
            }
        }
    </script>
</body>
</html>

📌 Passo 5: Instalar todas as dependências:

npm install

Inicie o projeto:

node server.js

Acessar ele localmente:

http://localhost:8080

📌 Passo 6: O resultado da nossa aplicação sera: