// Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \example standalone
    \title Qt WebChannel Standalone Example
    \ingroup qtwebchannel-examples
    \image standalone-screenshot.png
    \examplecategory {Web Technologies}
    \brief A simple chat between a server and a remote client running in a
    browser.

    \e{Standalone} demonstrates how to use the QWebChannel C++ API to
    communicate with an external client. It is a simple chat between a C++
    application and a remote HTML client running in your default browser.

    \include examples-run.qdocinc

    \section1 Communicating with a Remote Client

    The C++ application sets up a QWebChannel instance and publishes a \c Core
    object over it. For the remote client side, the \c {index.html} file
    is opened. Both show a dialog with the list of received messages and an input
    box to send messages to the other end.

    The \c Core emits the \c Core::sendText() signal when the user sends
    a message. The signal automatically gets propagated to the HTML client.
    When the user enters a message on the HTML side, \c Core::receiveText()
    is called.

    All communication between the HTML client and the C++ server is done
    over a WebSocket. The C++ side instantiates a QWebSocketServer and
    wraps incoming QWebSocket connections in QWebChannelAbstractTransport
    objects. These objects are then connected to the QWebChannel instance.

    \sa {Qt WebChannel JavaScript API}
*/
