DataFlex
DataFlex
WebSocket Connect
See more WebSocket Examples
Demonstrates how to establish a WebSocket connection. Once the connection is established, messages may be sent back-and-forth. Messages are sent in frames, where the last frame in the message is indicated by a "final" bit. A frame constitutes the entire message if the first frame sent has the "final" bit sent. (In most cases, you'll probably be sending single-frame messages.)Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vRest
Handle hoRest
Handle hoWs
String sResponseBody
Integer iStatusCode
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// --------------------------------------------------
// A WebSocket connection begins life as an HTTP GET request containing a few special header fields,
// such as "Upgrade: websocket".
// Your application will use the Chilkat Rest class to send the initial HTTP GET. This allows you
// to use the full capability of the Chilkat Rest class to customize the GET for any particular situation.
// For example:
//
// - If custom HTTP request header fields must be added.
// - If authentication is required, such as OAuth2, OAuth1, Basic HTTP Auth, etc.
// - If HTTPS, SSH Tunneling, Proxies (HTTP or SOCKS), or other advanced connection or TLS features are required.
//
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
Get ComConnect Of hoRest "someserver.com" 80 False False To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatWebSocket)) To hoWs
If (Not(IsComObjectCreated(hoWs))) Begin
Send CreateComObject of hoWs
End
// Tell the WebSocket to use this connection.
Get pvComObject of hoRest to vRest
Get ComUseConnection Of hoWs vRest To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoWs To sTemp1
Showln sTemp1
Procedure_Return
End
// Add the standard WebSocket open handshake headers that will be needed.
// (This adds the required HTTP request headers to the rest object.)
Get ComAddClientHeaders Of hoWs To iSuccess
// Add any additional headers that might be desired.
// Two common WebSocketSpecific headers are "Sec-WebSocket-Protocol" and "Origin".
Get ComAddHeader Of hoRest "Sec-WebSocket-Protocol" "x-something" To iSuccess
Get ComAddHeader Of hoRest "Origin" "http://someserver.com" To iSuccess
// Do the open handshake.
Get ComFullRequestNoBody Of hoRest "GET" "/something" To sResponseBody
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// 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..)
Get ComResponseStatusCode Of hoRest To iStatusCode
Showln "Response status code: " iStatusCode
If (iStatusCode <> 101) Begin
Showln sResponseBody
Showln "-- Failed because of unexpected response status code."
Procedure_Return
End
// We have the expected 101 response, so let's now validate the
// contents of the response, such as the value sent by the server in the
// Sec-WebSocket-Accept header.
Get ComValidateServerHandshake Of hoWs To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoWs To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "WebSocket connection successful."
// The application may now begin sending and receiving frames on the WebSocket connection.
// (At this point, we're done with the rest object...)
End_Procedure