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:
| File | Location | Description |
|---|---|---|
cWinsock.cls | add/ | Low-level Socket wrapper |
cWebSocketClient.cls | newWebsocket/ | Client class |
cWebSocketServer.cls | newWebsocket/ | Server class |
cWebSocketFrame.cls | newWebsocket/ | Frame parsing class |
cByteBuffer.cls | newWebsocket/ | Buffer class |
cWebSocketServerClient.cls | newWebsocket/ | Server client class |
mWebSocketUtils.bas | newWebsocket/ | Utility module |
Adding to Project
- Open VB6 project
- Menu: Project → Add Class Module / Add Module
- 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 SubStep 3: Run Test
- Press F5 to run the program
- Enter server address (e.g.,
ws://127.0.0.1:8080) - Click "Connect"
- 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 SubStep 3: Run Test
- Press F5 to run the server program
- Click "Start Service"
- Run the client program created above
- Click "Connect"
- 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 SubClient 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:
- Menu: Project → Add Module
- Browse to
newWebsocket/mWebSocketUtils.bas - 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.1instead oflocalhost
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 SubQ6: 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
- See client.md for detailed client API
- See server.md for detailed server API
- See advanced.md for advanced features
Last Updated: 2026-01-10