Sample code for 30+ languages & platforms
B4X

Duplicate Python websockets

See more WebSocket Examples

Demonstrates how to duplicate the following Python client-side websocket snippet:
async with websockets.connect('ws://192.168.1.35/websocket') as websocket:
await websocket.send("http.controller_login:username=xxx&password=xxxxx")
response = await websocket.recv()

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

'  This example requires the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

'  In Python, the following line of code does more than just connect:
'  
'       websockets.connect('ws://192.168.1.35/websocket')
'  
'  It is connecting to 192.168.1.35 without using TLS.  If the URI starts with "wss://", then TLS should be used.
'  But this URI begins with just "ws:/", so no TLS.

'  Also, after connecting, a GET request is sent to the /websocket endpoint.
'  In summary, the websockets.connect function is establishing the connection and it sends a GET request.

'  First establish the connection.
'  No TLS, use the default HTTP port 80.
Dim rest As ChilkatRest
rest.Initialize("rest")
success = rest.Connect("192.168.1.35", 80, False, False)
If success <> True Then
    Log(rest.LastErrorText)
    Return
End If


Dim ws As ChilkatWebSocket
ws.Initialize("ws")

'  Tell the WebSocket to use this connection.
success = ws.UseConnection(rest)
If success <> True Then
    Log(ws.LastErrorText)
    Return
End If


'  Add the standard WebSocket open handshake headers that will be needed.
'  (This adds the required HTTP request headers to the rest object.)
ws.AddClientHeaders

'  Now send the GET request to /websockets.
Dim responseBody As String = rest.FullRequestNoBody("GET", "/websockets")
If rest.LastMethodSuccess <> True Then
    Log(rest.LastErrorText)
    Return
End If


'  If successful, the HTTP response status code should be 101,
'  and the response body will be empty. (If it failed, we'll have a look
'  at the response body..)
Dim statusCode As Int = rest.ResponseStatusCode
Log("Response status code: " & statusCode)

If statusCode <> 101 Then
    Log(responseBody)
    Log("-- Failed because of unexpected response status code.")
    Return
End If


'  We have the expected 101 response, so let's now validate the 
'  contents of the response.
success = ws.ValidateServerHandshake
If success <> True Then
    Log(ws.LastErrorText)
    Return
End If


Log("WebSocket connection successful.")

'  The application may now begin sending and receiving frames on the WebSocket connection.

'  The 1st frame sent by the Python snippet is:
'  
'      websocket.send("http.controller_login:username=xxx&password=xxxxx")
'  

'  Send the same using Chilkat, and get the response.
Dim finalFrame As Boolean = True
success = ws.SendFrame("http.controller_login:username=xxx&password=xxxxx", finalFrame)
If success <> True Then
    Log(ws.LastErrorText)
    Return
End If


'  Read an incoming frame.
success = ws.ReadFrame
If success <> True Then
    Log("Failed to receive a frame")
    Log("ReadFrame fail reason = " & ws.ReadFrameFailReason)
    Log(ws.LastErrorText)
    Return
End If


'  Show the string that was received.
Dim receivedStr As String = ws.GetFrameData
Log("Received: " & receivedStr)

'  Continue with whatever additional communications are desired...
'  ....
'