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

Wasabi v2.3.2-beta: cliente TCP/TLS nativo, exemplos, benchmarks e suíte de testes

Há alguns dias atrás publiquei sobre o Wasabi, um módulo WebSocket/WSS nativo para VBA sem dependências externas. De lá para cá o projeto avançou bastante. A versão v2.3.2-beta já está disponível, e gostaria de compartilhar as novidades.

A principal adição é um cliente TCP nativo completo, que funciona tanto sobre TCP puro quanto sobre TLS 1.2/1.3. Ele compartilha o mesmo pool de conexões, suporte a proxy, descoberta de MTU e infraestrutura Schannel já utilizados pelo cliente WebSocket. A API é simples e direta:

Dim h As Long

' TCP puro
If TcpConnect("tcpbin.com", 4242, h) Then
    TcpSendText "Olá" & vbCrLf, h
    Debug.Print TcpReceiveText(h)
    TcpDisconnect h
End If

' TCP com TLS
If TcpConnectTLS("exemplo.com", 443, h) Then
    TcpSendText "GET / HTTP/1.0" & vbCrLf & "Host: exemplo.com" & vbCrLf & vbCrLf, h
    Debug.Print TcpReceiveText(h)
    TcpDisconnect h
End If

Todas as funções TCP (TcpSend, TcpSendText, TcpReceive, TcpReceiveText, TcpReceiveUntil, TcpBroadcast etc.) funcionam com proxies corporativos, autenticação NTLM/Kerberos e a mesma camada TLS das conexões wss. As funções de configuração de timeout, certificados e buffers também estão disponíveis nos handles TCP.

O repositório agora possui uma pasta de exemplos com código pronto para uso:

  • Conexão WebSocket com a Binance para dados de ticker em tempo real
  • Publicação e assinatura MQTT usando o Mosquitto
  • Cliente TCP echo
  • Requisição HTTPS pura sobre TLS
  • Conexão via proxy com autenticação NTLM

Cada exemplo está documentado e testado no Office 32 e 64 bits.

Foi adicionada uma pasta de benchmarks. Ela contém rotinas VBA que medem vazão, latência e tempo de estabelecimento de conexão. São úteis para ajustes de desempenho e comparações entre ambientes.

Uma pasta de testes contém testes unitários para parsing de frames, compressão, manipulação de pacotes MQTT e outras lógicas internas. A suíte vem crescendo a cada release.

A documentação na pasta docs foi reorganizada. A referência da API está mais clara, os códigos de erro estão explicados e foi incluída uma visão geral da arquitetura.

Um exemplo rápido usando WebSocket e MQTT:

Dim h As Long

If WebSocketConnect("wss://test.mosquitto.org:8081/mqtt", h, False, True, "mqtt") Then
    MqttConnect "wasabi-client", h
    MqttSubscribe "sensores/temperatura", 0, h
    
    Do While WebSocketIsConnected(h)
        Dim msg As String
        msg = MqttReceive(h)
        If msg <> "" And Left(msg, 1) <> "[" Then
            Dim partes() As String
            partes = Split(msg, "|", 2)
            Debug.Print partes(0), partes(1)
        End If
        DoEvents
    Loop
    
    MqttDisconnect h
    WebSocketDisconnect h
End If

Um bug reportado pelo fafalone (crash no Office 32 bits) foi corrigido em poucas horas após o post original, e a correção já está no branch principal.

O módulo continua sendo um único arquivo .bas, sem referências, sem DLLs e sem necessidade de registro. Funciona do Windows XP ao Windows 11, em qualquer host VBA.

Github: https://github.com/uesleibros/wasabi
Release v2.3.2-beta: https://github.com/uesleibros/wasabi/releases/tag/v2.3.2-beta

Carregando publicação patrocinada...