Qt 5.9 | Qt WebChannel | Qt WebChannel Examples | Qt WebChannel ChatServer Example

Qt 5.9.3 Reference Documentation

# Qt WebChannel ChatServer Example

ChatServer provides a chat service that the Qt WebChannel ChatClient QML Example and Qt WebChannel ChatClient HTML Example can connect to.

## Running the Example

To run the example from Qt Creator, open the Welcome mode and select the example from Examples. For more information, visit Building and Running an Example.

## Implementing a Chat Server

The C++ application implements a QObject which provides all mechanisms required for a chat service. This object is published through a QWebChannel which uses a WebSocket as transport.

The server provides a basic `login` method (username only, no passwords), which must be successfully invoked before a client is able to chat. After login, a client can invoke the method `sendMessage` and receive the signal `newMessage` to write and receive messages. Furthermore, there is a `userList` property which provides the names of all other connected clients. Additionally the server sends a `keepAlive` signal periodically to all clients. The clients have to respond to this signal, otherwise the client will be removed from the `userList` property.

The example shows how basic QObject elements can be used with QWebChannel, that is signals (`newMessage`), slots (`sendMessage`), and properties (`userList`).

Because this is a plain server application, separate clients are needed to interact with it. Qt WebChannel ChatClient QML Example and Qt WebChannel ChatClient HTML Example are client implementations compatible with this server.

Files:

- chatserver-cpp/chatserver.cpp
- chatserver-cpp/chatserver.h
- chatserver-cpp/main.cpp
- chatserver-cpp/chatserver-cpp.pro