Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loRest
LOCAL loWs
LOCAL lcResponseBody
LOCAL lnStatusCode
LOCAL lnFinalFrame
LOCAL lcReceivedStr
lnSuccess = 0
* 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.
loRest = CreateObject('Chilkat.Rest')
lnSuccess = loRest.Connect("192.168.1.35",80,0,0)
IF (lnSuccess <> 1) THEN
? loRest.LastErrorText
RELEASE loRest
CANCEL
ENDIF
loWs = CreateObject('Chilkat.WebSocket')
* Tell the WebSocket to use this connection.
lnSuccess = loWs.UseConnection(loRest)
IF (lnSuccess <> 1) THEN
? loWs.LastErrorText
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
* Add the standard WebSocket open handshake headers that will be needed.
* (This adds the required HTTP request headers to the rest object.)
loWs.AddClientHeaders()
* Now send the GET request to /websockets.
lcResponseBody = loRest.FullRequestNoBody("GET","/websockets")
IF (loRest.LastMethodSuccess <> 1) THEN
? loRest.LastErrorText
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
* 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..)
lnStatusCode = loRest.ResponseStatusCode
? "Response status code: " + STR(lnStatusCode)
IF (lnStatusCode <> 101) THEN
? lcResponseBody
? "-- Failed because of unexpected response status code."
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
* We have the expected 101 response, so let's now validate the
* contents of the response.
lnSuccess = loWs.ValidateServerHandshake()
IF (lnSuccess <> 1) THEN
? loWs.LastErrorText
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
? "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.
lnFinalFrame = 1
lnSuccess = loWs.SendFrame("http.controller_login:username=xxx&password=xxxxx",lnFinalFrame)
IF (lnSuccess <> 1) THEN
? loWs.LastErrorText
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
* Read an incoming frame.
lnSuccess = loWs.ReadFrame()
IF (lnSuccess <> 1) THEN
? "Failed to receive a frame"
? "ReadFrame fail reason = " + STR(loWs.ReadFrameFailReason)
? loWs.LastErrorText
RELEASE loRest
RELEASE loWs
CANCEL
ENDIF
* Show the string that was received.
lcReceivedStr = loWs.GetFrameData()
? "Received: " + lcReceivedStr
* Continue with whatever additional communications are desired...
* ....
*
RELEASE loRest
RELEASE loWs