Skip to content

Quick Start Guide

This guide will help you quickly get started with the WebSocket library to create basic server and client applications.


📦 Prerequisites

Required Files

Ensure the following files are added to your project:

FileLocationDescription
cWinsock.clsadd/Low-level Socket wrapper
cWebSocketClient.clsnewWebsocket/Client class
cWebSocketServer.clsnewWebsocket/Server class
cWebSocketFrame.clsnewWebsocket/Frame parsing class
cByteBuffer.clsnewWebsocket/Buffer class
cWebSocketServerClient.clsnewWebsocket/Server client class
mWebSocketUtils.basnewWebsocket/Utility module

Adding to Project

  1. Open VB6 project
  2. Menu: Project → Add Class Module / Add Module
  3. Browse to corresponding file and add

🚀 Client Quick Start

Step 1: Create Form

Create a new form and add the following controls:

  • 1 TextBox (txtURL) - For entering server address
  • 2 CommandButton (cmdConnect, cmdDisconnect) - Connect/Disconnect
  • 1 TextBox (txtMessage) - Input message
  • 1 CommandButton (cmdSend) - Send message
  • 1 TextBox (txtLog) - Display log (MultiLine = True)

Step 2: Write Code

vb
Option Explicit

Private WithEvents m_Client As cWebSocketClient

Private Sub Form_Load()
    Set m_Client = New cWebSocketClient
    
    txtURL.Text = "ws://127.0.0.1:8080"
    txtMessage.Text = "Hello WebSocket!"
    
    UpdateUI False
End Sub

Private Sub cmdConnect_Click()
    On Error GoTo EH
    
    m_Client.Connect txtURL.Text
    LogMessage "Connecting to: " & txtURL.Text
    Exit Sub
    
EH:
    LogMessage "Connection failed: " & Err.Description
End Sub

Private Sub cmdDisconnect_Click()
    If Not m_Client Is Nothing Then
        m_Client.CloseConnection
        LogMessage "Disconnected"
    End If
    UpdateUI False
End Sub

Private Sub cmdSend_Click()
    On Error GoTo EH
    
    If m_Client.State = WS_STATE_OPEN Then
        m_Client.SendText txtMessage.Text
        LogMessage "Sent: " & txtMessage.Text
    End If
    Exit Sub
    
EH:
    LogMessage "Send failed: " & Err.Description
End Sub

' ====== WebSocket Event Handling ======

Private Sub m_Client_OnOpen()
    LogMessage "Successfully connected to WebSocket server"
    UpdateUI True
End Sub

Private Sub m_Client_OnClose(ByVal Code As WsCloseCode, ByVal Reason As String)
    LogMessage "Connection closed: " & Reason & " (Status: " & Code & ")"
    UpdateUI False
End Sub

Private Sub m_Client_OnTextMessage(ByVal Message As String)
    LogMessage "Received message: " & Message
End Sub

Private Sub m_Client_OnError(ByVal Description As String)
    LogMessage "Error: " & Description
End Sub

' ====== Helper Functions ======

Private Sub LogMessage(sMessage As String)
    txtLog.Text = txtLog.Text & Format$(Now, "hh:mm:ss") & " - " & sMessage & vbCrLf
    txtLog.SelStart = Len(txtLog.Text)
End Sub

Private Sub UpdateUI(bConnected As Boolean)
    cmdConnect.Enabled = Not bConnected
    cmdDisconnect.Enabled = bConnected
    cmdSend.Enabled = bConnected
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Not m_Client Is Nothing Then
        m_Client.CloseConnection
    End If
End Sub

Step 3: Run Test

  1. Press F5 to run the program
  2. Enter server address (e.g., ws://127.0.0.1:8080)
  3. Click "Connect"
  4. After successful connection, enter message and click "Send"

🌐 Server Quick Start

Step 1: Create Form

Create a new form and add the following controls:

  • 1 TextBox (txtPort) - Port number
  • 2 CommandButton (cmdStart, cmdStop) - Start/Stop
  • 1 ListBox (lstClients) - Client list
  • 1 TextBox (txtLog) - Display log (MultiLine = True)

Step 2: Write Code

vb
Option Explicit

Private WithEvents m_Server As cWebSocketServer

Private Sub Form_Load()
    Set m_Server = New cWebSocketServer
    txtPort.Text = "8080"
End Sub

Private Sub cmdStart_Click()
    On Error GoTo EH
    
    m_Server.Listen CLng(txtPort.Text)
    LogMessage "Server started, listening on port: " & txtPort.Text
    Exit Sub
    
EH:
    LogMessage "Start failed: " & Err.Description
End Sub

Private Sub cmdStop_Click()
    If Not m_Server Is Nothing Then
        m_Server.StopServer
        LogMessage "Server stopped"
    End If
    lstClients.Clear
End Sub

' ====== WebSocket Server Event Handling ======

Private Sub m_Server_OnStart(ByVal Port As Long)
    LogMessage "Service started, listening on port: " & Port
End Sub

Private Sub m_Server_OnStop()
    LogMessage "Service stopped"
End Sub

Private Sub m_Server_OnClientConnect(ByVal ClientID As String, ByVal RemoteAddress As String, ByVal RemotePort As Long)
    LogMessage "Client connected: " & ClientID & " (" & RemoteAddress & ":" & RemotePort & ")"
    lstClients.AddItem ClientID & " - " & RemoteAddress
    
    ' Send welcome message
    m_Server.SendText ClientID, "Welcome to WebSocket Server!"
End Sub

Private Sub m_Server_OnClientDisconnect(ByVal ClientID As String, ByVal Reason As String)
    LogMessage "Client disconnected: " & ClientID & " - " & Reason
    
    ' Remove from list
    Dim i As Long
    For i = 0 To lstClients.ListCount - 1
        If InStr(lstClients.List(i), ClientID) > 0 Then
            lstClients.RemoveItem i
            Exit For
        End If
    Next
End Sub

Private Sub m_Server_OnClientTextMessage(ByVal ClientID As String, ByVal Message As String)
    LogMessage "Received message from " & ClientID & ": " & Message
    
    ' Echo message
    m_Server.SendText ClientID, "Server received: " & Message
    
    ' Broadcast to all other clients (chat mode)
    m_Server.BroadcastText ClientID & ": " & Message, ClientID
End Sub

Private Sub m_Server_OnClientBinaryMessage(ByVal ClientID As String, Data() As Byte)
    LogMessage "Received binary message from " & ClientID & ": " & (UBound(Data) + 1) & " bytes"
End Sub

Private Sub m_Server_OnError(ByVal Description As String)
    LogMessage "Error: " & Description
End Sub

' ====== Helper Functions ======

Private Sub LogMessage(sMessage As String)
    txtLog.Text = txtLog.Text & Format$(Now, "hh:mm:ss") & " - " & sMessage & vbCrLf
    txtLog.SelStart = Len(txtLog.Text)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Not m_Server Is Nothing Then
        m_Server.StopServer
    End If
End Sub

Step 3: Run Test

  1. Press F5 to run the server program
  2. Click "Start Service"
  3. Run the client program created above
  4. Click "Connect"
  5. Send messages to test

💬 Chat Room Example

Server Code

vb
Option Explicit

Private WithEvents m_Server As cWebSocketServer

Private Sub Form_Load()
    Set m_Server = New cWebSocketServer
    m_Server.Listen 8080
End Sub

Private Sub m_Server_OnClientConnect(ByVal ClientID As String, ByVal RemoteAddress As String, ByVal RemotePort As Long)
    Debug.Print ClientID & " joined chat room"
    
    ' Notify other users
    m_Server.BroadcastText "[System] " & ClientID & " joined chat room", ClientID
    
    ' Send welcome message
    m_Server.SendText ClientID, "Welcome to chat room! Current online: " & m_Server.ClientCount & " users"
End Sub

Private Sub m_Server_OnClientDisconnect(ByVal ClientID As String, ByVal Reason As String)
    Debug.Print ClientID & " left chat room"
    m_Server.BroadcastText "[System] " & ClientID & " left chat room"
End Sub

Private Sub m_Server_OnClientTextMessage(ByVal ClientID As String, ByVal Message As String)
    ' Broadcast to all users
    m_Server.BroadcastText ClientID & ": " & Message, ClientID
    
    Debug.Print ClientID & ": " & Message
End Sub

Private Sub Form_Unload(Cancel As Integer)
    m_Server.StopServer
End Sub

Client Code

vb
Option Explicit

Private WithEvents m_Client As cWebSocketClient
Private m_sUsername As String

Private Sub Form_Load()
    Set m_Client = New cWebSocketClient
    m_sUsername = "User" & CStr(Int(Rnd * 1000))
    
    txtURL.Text = "ws://127.0.0.1:8080"
End Sub

Private Sub cmdConnect_Click()
    m_Client.Connect txtURL.Text
End Sub

Private Sub cmdSend_Click()
    If m_Client.State = WS_STATE_OPEN Then
        m_Client.SendText txtMessage.Text
        txtMessage.Text = ""
    End If
End Sub

Private Sub m_Client_OnOpen()
    Debug.Print "Connected to chat room"
    UpdateUI True
End Sub

Private Sub m_Client_OnTextMessage(ByVal Message As String)
    txtChat.Text = txtChat.Text & Message & vbCrLf
    txtChat.SelStart = Len(txtChat.Text)
End Sub

Private Sub UpdateUI(bConnected As Boolean)
    cmdConnect.Enabled = Not bConnected
    cmdSend.Enabled = bConnected
End Sub

Private Sub Form_Unload(Cancel As Integer)
    m_Client.CloseConnection
End Sub

🔍 Common Questions

Q1: Compile error "User-defined type not defined"

Cause: mWebSocketUtils.bas module not added.

Solution:

  1. Menu: Project → Add Module
  2. Browse to newWebsocket/mWebSocketUtils.bas
  3. Add to project

Q2: Connection failed "Unable to resolve hostname"

Cause: URL format error or network issue.

Solution:

  • Check URL format: ws://host:port
  • Ensure server is started
  • Use 127.0.0.1 instead of localhost

Q3: Handshake failed "Handshake failed"

Cause:

  • Server not implementing WebSocket handshake
  • Port occupied by another program
  • Firewall blocking

Solution:

  • Ensure using WebSocket library server
  • Change port
  • Check firewall settings

Q4: Received garbled text

Cause: Encoding issue.

Solution: WebSocket library automatically handles UTF-8 encoding, no manual conversion needed.


Q5: How to send binary data

vb
' Send binary data
Dim baData() As Byte
baData = LoadFile("image.png")

m_Client.SendBinary baData

' Receive binary data
Private Sub m_Client_OnBinaryMessage(Data() As Byte)
    Debug.Print "Received " & (UBound(Data) + 1) & " bytes"
    SaveFile Data, "received.png"
End Sub

Q6: How to implement auto-reconnect

vb
Private WithEvents m_Client As cWebSocketClient
Private WithEvents tmrReconnect As Timer
Private m_bAutoReconnect As Boolean
Private m_sServerURL As String

Private Sub Form_Load()
    Set m_Client = New cWebSocketClient
    Set tmrReconnect = New Timer
    tmrReconnect.Interval = 5000  ' Reconnect after 5 seconds
    
    m_bAutoReconnect = True
    m_sServerURL = "ws://127.0.0.1:8080"
    
    ConnectToServer
End Sub

Private Sub ConnectToServer()
    If m_Client.State = WS_STATE_CLOSED Then
        m_Client.Connect m_sServerURL
    End If
End Sub

Private Sub m_Client_OnClose(ByVal Code As WsCloseCode, ByVal Reason As String)
    Debug.Print "Connection closed: " & Reason
    
    If m_bAutoReconnect Then
        Debug.Print "Reconnecting in 5 seconds..."
        tmrReconnect.Enabled = True
    End If
End Sub

Private Sub tmrReconnect_Timer()
    tmrReconnect.Enabled = False
    ConnectToServer
End Sub

📚 Next Steps


Last Updated: 2026-01-10

VB6 and LOGO copyright of Microsoft Corporation