.. zephyr:code-sample:: sockets-websocket-client :name: WebSocket Client :relevant-api: bsd_sockets websocket Implement a Websocket client that connects to a Websocket server. Overview ******** This sample application implements a Websocket client that will do an HTTP or HTTPS handshake request to HTTP server, then start to send data and wait for the responses from the Websocket server. The source code for this sample application can be found at: :zephyr_file:`samples/net/sockets/websocket_client`. Requirements ************ - :ref:`networking_with_host` Building and Running ******************** You can use this application on a supported board, including running it inside QEMU as described in :ref:`networking_with_qemu`. Build websocket-client sample application like this: .. zephyr-app-commands:: :zephyr-app: samples/net/sockets/websocket_client :board: :conf: :goals: build :compact: Enabling TLS support ==================== Enable TLS support in the sample by building the project with the ``overlay-tls.conf`` overlay file enabled using these commands: .. zephyr-app-commands:: :zephyr-app: samples/net/sockets/websocket_client :board: qemu_x86 :conf: "prj.conf overlay-tls.conf" :goals: build :compact: An alternative way is to specify ``-DEXTRA_CONF_FILE=overlay-tls.conf`` when running ``west build`` or ``cmake``. The certificate and private key used by the sample can be found in the sample's :zephyr_file:`samples/net/sockets/websocket_client/src/` directory. Running websocket-server in Linux Host ====================================== You can run this ``websocket-client`` sample application in QEMU and run the ``zephyr-websocket-server.py`` (from net-tools) on a Linux host. Other alternative is to install `websocketd `_ and use that. To use QEMU for testing, follow the :ref:`networking_with_qemu` guide. In a terminal window you can do either: .. code-block:: console $ ./zephyr-websocket-server.py or .. code-block:: console $ websocketd --port=9001 cat Run ``websocket-client`` application in QEMU: .. zephyr-app-commands:: :zephyr-app: samples/net/sockets/websocket_client :host-os: unix :board: qemu_x86 :conf: prj.conf :goals: run :compact: Note that ``zephyr-websocket-server.py`` or ``websocketd`` must be running in the Linux host terminal window before you start the ``websocket-client`` application in QEMU. Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`. Current version of ``zephyr-websocket-server.py`` found in `net-tools `_ project, does not support TLS.