Instruções de Uso

Guia completo para testar conexões WebSocket, usar templates, auto-respostas e todas as funcionalidades disponíveis.

Guia Rápido

1. Conectar pelo Navegador

  1. Acesse a página principal
  2. Clique em "Conectar"
  3. Aguarde a mensagem de boas-vindas
  4. Monitore conexões e mensagens na sidebar

2. Conectar Ferramenta Externa

  1. Use Postman, wscat ou outro cliente
  2. Conecte em ws://localhost:3001
  3. Envie qualquer JSON ou texto puro
  4. Monitore pelo navegador em tempo real

Formatos de Mensagem Aceitos

Flexível: O servidor aceita qualquer formato — JSON estruturado, JSON livre ou texto puro. Tudo será repassado para os clientes web conectados no mesmo IP.

Formato estruturado (opcional)

{
  "type": "message",
  "clientId": "SEU_CLIENT_ID",
  "data": "conteúdo_da_mensagem"
}

JSON livre (qualquer estrutura)

{"cmd": "ping", "data": "oi"}
{"action": "login", "user": "teste", "active": true}
{"sensor": "temp", "value": 23.5}

Texto puro (não-JSON)

msg:teste;cmd:start
HELLO WORLD
qualquer texto aqui

Testando com Postman

Configuração da Conexão

URL: ws://localhost:3001
Protocol: WebSocket
Type: Raw WebSocket

Exemplos de Envio

1. JSON simples

{"cmd": "ping", "data": "oi"}

2. Objeto complexo

{
  "usuario": "João",
  "acao": "login",
  "ativo": true,
  "nivel": 5
}

3. Texto puro

msg:hello;status:ok

Testando com wscat (Terminal)

Para conexões WebSocket via linha de comando, use o wscat:

Instalação do wscat

npm install -g wscat

Exemplo de uso

# 1. Conectar ao servidor
wscat -c ws://localhost:3001

# 2. Você receberá seu Client ID:
< {"type":"connected","clientId":"abc123..."}

# 3. Enviar qualquer JSON:
> {"cmd":"ping","data":"hello"}

# 4. Ou texto puro:
> msg:hello;status:ok

Templates de Mensagem

Crie templates reutilizáveis com variáveis dinâmicas usando a sintaxe $variavel. Templates podem ser JSON ou texto puro.

Exemplo JSON

{"cmd": $tipo, "ativo": $flag, "nome": "$nome"}

"$nome" → sempre string

$tipo sem aspas → auto-detecta tipo:

  • 42 → número
  • true / false → boolean
  • null → null
  • texto → string com aspas

Exemplo Texto Puro

msg:$mensagem;cmd:$comando

Em templates de texto, variáveis são substituídas diretamente sem aspas. Ex: com $mensagem=oi e $comando=startmsg:oi;cmd:start

Auto-Respostas

Configure respostas automáticas para mensagens recebidas de clientes externos. Dois modos de correspondência disponíveis:

Match Exato (JSON)

Todos os campos do trigger devem existir na mensagem com os mesmos valores.

Trigger: {"cmd": "ping"}
Match:   {"cmd": "ping", "extra": 1}  ✓
Falha:   {"cmd": "pong"}              ✗

Match por Campo/Valor

Verifica se um campo específico tem o valor esperado.

Campo: "cmd"   Valor: "ping"
Match: {"cmd": "ping", ...}  ✓

Dica: Se o cliente que enviou a mensagem estiver identificado, a auto-resposta é enviada diretamente a ele como respond_to_client. As regras podem ser ativadas/desativadas individualmente.

Recursos Avançados

Isolamento por IP

  • • Cada IP vê apenas suas próprias conexões
  • • Mensagens são isoladas por IP de origem
  • • Perfeito para testes em equipe
  • • Sem interferência entre usuários

Rate Limiting

  • • Máximo 30 mensagens por minuto por IP
  • • Proteção contra spam e sobrecarga
  • • Fila de espera quando necessário
  • • Limites configuráveis por ambiente

Limite de Clientes

  • • Máximo de 4 clientes externos exibidos na sidebar
  • • Clientes adicionais ficam conectados mas não aparecem na lista
  • • Selecione um cliente para ver detalhes e enviar respostas

Interface com Abas

  • Mensagens — envio manual e customizado
  • Logs — histórico em tempo real
  • Templates — mensagens reutilizáveis com variáveis
  • Auto-Respostas — respostas automáticas configuráveis

Formatos de Resposta do Servidor

TipoQuando RecebeConteúdo
connectedAo conectar (clientes externos)Seu clientId
welcomeAo conectar (clientes web)clientId + estatísticas
client_messageMensagem de outro clientefrom, fromType, data
server_responseResposta da interface webDados enviados pela interface
response_sentConfirmação de envio diretotoClientId, data
errorErro de rate limit ou outroDescrição do erro
queuedServidor lotadoPosição na fila + tempo estimado

Solução de Problemas

Não consegue conectar?

  • Verifique se o servidor WebSocket está rodando
  • Confirme que não há firewall bloqueando a conexão
  • Use ws:// para desenvolvimento local e wss:// para produção com SSL
  • Endereço do servidor: ws://localhost:3001

Mensagens não aparecem no monitoramento?

  • Certifique-se de que o navegador está conectado na página principal
  • Clientes devem estar no mesmo IP para verem as mensagens
  • Respeite o rate limit de 30 mensagens/minuto

Auto-respostas não disparam?

  • Verifique se a regra está ativada (toggle ligado)
  • Para match exato: os campos do trigger devem existir na mensagem
  • Para match por campo: o campo e valor devem corresponder exatamente
  • A verificação é feita sobre o campo data para client_message