Executando verificação de segurança...
2

Pitch: Wasabi - Uma biblioteca WebSocket para VBA

Quero compartilhar com vocês um projeto que saiu do forno (ou melhor, do editor VBA) e que tem uma origem bem inusitada.

Tudo começou com uma comunidade de amigos meus que tinham um hobby diferente. Eles criavam jogos inteiros dentro do PowerPoint usando VBA. Sim, isso mesmo que você leu: PowerPoint. Eles faziam milagre com o que tinham ali, mas sempre batiam num muro técnico: não existia uma forma simples e robusta de fazer comunicação em tempo real.

Foi aí que surgiu o interesse: por que não ajudar essa galera (e de quebra, qualquer pessoa que automatiza coisas no Office) com uma biblioteca de WebSocket que funcione de verdade no VBA, sem gambiarra? Depois de muito café, código e testes, nasceu o Wasabi.

O que é o Wasabi?

O Wasabi é um cliente WebSocket/WSS puro em VBA, energizado por Winsock, Schannel e pelas APIs nativas do Windows. É um único arquivo .bas que você importa no seu projeto e pronto: comunicação em tempo real, com segurança, sem instalar absolutamente nada.

A ideia foi trazer para o ecossistema Office uma experiência parecida com a do socket.io no Node.js, mas adaptada à realidade do VBA.

Qual problema ele resolve?

Quem já tentou fazer comunicação em tempo real no VBA sabe que o caminho tradicional é doloroso:

  1. Falta de padronização: Não existe um caminho oficial e moderno para WebSockets no VBA.
  2. API de baixo nível, super verbosa: Trabalhar direto com Winsock e APIs do Windows exige declarações, structs e callbacks complexos.
  3. Limitação de eventos: Você acaba criando timers e loops de DoEvents que travam o Office ou geram inconsistências.
  4. Problemas de segurança: O Rnd do VBA não é seguro para criptografia, mas o Wasabi usa CryptGenRandom para gerar as máscaras dos frames, que são criptograficamente seguras.

O Wasabi chega para resolver isso:

  • Segurança nativa com TLS: Pode usar o Schannel para conexões wss:// sem depender de navegador ou bibliotecas externas.
  • MQTT 3.1.1 integrado: Conecta com brokers MQTT direto do Excel, ótimo para IoT.
  • Proxy corporativo com NTLM/Kerberos: Funciona em ambientes empresariais com autenticação integrada, sem precisar instalar nada.
  • Auto-reconexão: A conexão se mantém estável mesmo com polling irregular.
  • Compressão permessage-deflate (RFC 7692): Reduz o uso de banda, ativando sob demanda.

Onde isso pode ser útil?

  • Bots para Discord, Slack, Telegram direto do Excel ou Word.
  • Trading e finanças: Receber cotações da Binance, Coinbase ou B3 em tempo real na planilha, com latência de milissegundos.
  • Dashboards ao vivo que atualizam dados sem polling HTTP.
  • IoT e indústria: Receber dados de sensores ESP32 ou sistemas SCADA via WebSocket ou MQTT.
  • Jogos e automação: Construir comunicação servidor/cliente para planilhas interativas.

Como começar

  1. Baixe o arquivo Wasabi.bas na página de releases.
  2. No editor VBA, vá em File → Import File e importe o módulo.
  3. Pronto! Nada de habilitar referências, nada de instalar dependências.

Exemplo mínimo para conectar a um servidor de eco:

Dim handle As Long
If WebSocketConnect("wss://echo.websocket.org", handle) Then
    WebSocketSend "Olá, Wasabi!", handle
    Debug.Print WebSocketReceive(handle)
    WebSocketDisconnect handle
End If

Funciona em Office de 32 e 64 bits, do Windows XP ao Windows 11, sem qualquer alteração.

Onde encontrar mais

O projeto é open source com licença MIT e tem uma documentação bem completa no repositório oficial. O código está lá para explorar, contribuir ou usar nos seus próprios projetos. A documentação detalhada, com referência da API, tratamento de erros e arquitetura está na pasta docs.

E se você também tem aquela vontade de criar algo "fora da caixinha" no Office, o Wasabi está aí para ajudar! Sintam-se à vontade para testar, abrir issues, sugerir features ou mandar aquele "Oi" no privado.

Repositório no Github: https://github.com/uesleibros/wasabi
Releases: https://github.com/uesleibros/wasabi/releases

Carregando publicação patrocinada...