WebSocketClient Module

# Introduction to the WebSocketClient Module

The WebSocketClient module provides client support for RFC-6455 based WebSocket protocol implementations in Qore.

To use this module, use `"%requires WebSocketClient"` in your code.

This module automatically uses the WebSocketUtil module for encoding and decoding web socket messages.

All the public symbols in the module are defined in the WebSocketClient namespace.

Currently the module provides the following classes:

- WebSocketClient: the web socket client class
- WebSocketConnectionObject: the web socket connection class (based on the ConnectionProvider module)

Example

#!/usr/bin/env qore
%new-style
%enable-all-warnings
%requires WebSocketClient
*string url = shift ARGV;
if (!url) {
stderr.printf("usage: %s <URL>\n", get_script_name());
exit(1);
}
WebSocketClient ws();
ws.connect(("url": url, "callback": sub (*data d) { if (d.typeCode() == NT_BINARY) printf("binary msg received: %y\n", d); else if (d) printf("%s\n", d);}));
# wait forever (or until ctrl-c)
Counter c(1);
c.waitForZero();

# WebSocketClient Module Release History

## v1.6.1

- added WebSocketClient::pong() to allow an unsolicited `PONG` message to be sent as a unidirectional keep-alive message from the client to the server (issue 2566)

## v1.6

- added the WebSocketConnectionObject class to support the ConnectionProvider module
- updated for complex types
- fixed a bug where the event loop thread would immediately terminate after a reconnection (issue 2061)
- improved client logging
- fixed a bug where the WebSocketClient::WebSocketClient class did not validate the `Sec-WebSocket-Accept` response header according to RFC6455 (issue 2062)
- added support for the `yield` option in the constructor

## v1.5

- added timeout values to Socket and HTTPClient calls (issue 1725)

## v1.4

- fixed a bug parsing and generating the websocket close status code (issue 1216)

## v1.3

- ignore `SOCKET-NOT-OPEN` errors when closing (server already closed the connection)

## v1.2

- prepend `"WebSocketClient: "` to log messages

## v1.1

- added socket instrumention support from Qore 0.8.9

## v1.0

- the initial version of the WebSocketClient module