Como Funciona o Nexa: Arquitetura Técnica
O Nexa opera como um KVM virtual por software (Keyboard, Video, Mouse — sem transmissão de vídeo). Ele conecta computadores em rede local e transmite eventos de controle de periféricos em frações de milissegundo.
1. O Ciclo de Vida da Transição de Borda
Quando o usuário move o mouse até o limite direito ou esquerdo do monitor principal (Host), o SessionEngine do Nexa detecta o impacto na borda virtual:
- Supressão Local de Eventos: O hook do sistema operacional no Host suprime a movimentação do cursor local e trava sua renderização na borda para que ele não saia da área útil do monitor.
- Disparo do Pacote
ScreenEnter: O Nexa calcula a coordenada relativa Y de entrada e normaliza esse valor em uma escala de 16 bits (0 a 65535). - Transmissão Cifrada via TCP: O pacote é criptografado com ChaCha20-Poly1305 e enviado ao receptor.
- Injeção no Receptor (Guest): O computador de destino recebe o pacote e move o cursor para a borda oposta (ex: borda esquerda) na mesma altura proporcional.
2. Coalescência Adaptativa de Mouse (1000 Hz)
Mouses modernos de alta precisão operam com taxas de amostragem de 500 Hz ou 1000 Hz, disparando até 1.000 interrupções por segundo. Em redes locais Wi-Fi com múltiplos clientes, transmitir 1.000 pacotes individuais TCP causaria sobrecarga de overhead e jitter.
O crate nexa-core/src/coalescer.rs implementa um agregador temporal:
// Agrupa rajadas de deltas de movimento em janelas de 3 milissegundos
if let Some(elapsed) = last_event_time.elapsed() {
if elapsed >= Duration::from_millis(3) {
flush_consolidated_delta(accumulated_dx, accumulated_dy);
}
}
Essa técnica reduz o consumo de banda e o processamento de pacotes em até 75%, preservando a suavidade e sem gerar latência humana perceptível.
3. Sincronização de Clipboard com Algoritmo Anti-Echo
Um dos problemas clássicos em softwares KVM legados é o "Clipboard Echo": quando o Computador A envia um texto para o Computador B, o sistema operacional de B dispara um evento informando que seu clipboard mudou, o que faria B reenviar o mesmo texto de volta para A, gerando um loop infinito que trava a rede.
O Nexa soluciona isso calculando um hash criptográfico SHA-256 de cada cópia:
- Se o hash do clipboard local for idêntico ao último hash recebido pela rede, o envio é suprimido como eco.
- Se o hash for idêntico ao último que já foi transmitido, o envio é suprimido como duplicata.
- Possui limite de segurança de 10 MB contra estouro de memória e suporta formatação UTF-8 completa (acentos, kanjis, emojis e blocos de código).
4. Framing Binário de 16 Bytes com CRC32
Em vez de usar formatos pesados como JSON ou Protobuf sobre HTTP, o Nexa adota um cabeçalho binário ultra-compacto de 16 bytes:
| Offset | Tamanho | Campo | Função |
|---|---|---|---|
| 0..4 | 4 bytes | Magic Number | Constante 0x4E455841 ("NEXA") para rejeição de tráfego aleatório. |
| 4..5 | 1 byte | Protocol Version | Versão do protocolo binário (atual: 1). |
| 5..6 | 1 byte | Packet Type | Identificador de mensagem (MouseMove, KeyPress, Clipboard, Ping, etc.). |
| 6..8 | 2 bytes | Sequence Number | Contador sequencial para detecção de pacotes fora de ordem. |
| 8..12 | 4 bytes | Payload Length | Tamanho exato em bytes dos dados que acompanham o cabeçalho. |
| 12..16 | 4 bytes | CRC32 Checksum | Validador rápido de integridade física contra ruído de rede. |
Continue Explorando o Nexa:
Descubra como os mecanismos de criptografia protegem cada sessão ou instale o Nexa na sua máquina: