QWebSocket客户端示例

描述

EchoClient示例实现了一个WebSocket客户端,它向WebSocket服务器发送一条消息并将收到的回应打印出来。这个示例应该与EchoServer示例一起使用。

代码

我们首先连接到`connected()`信号。

EchoClient::EchoClient(const QUrl &url, bool debug, QObject *parent) :
    QObject(parent),
    m_debug(debug)
{
    if (m_debug)
        qDebug() << "WebSocket server:" << url;
    connect(&m_webSocket, &QWebSocket::connected, this, &EchoClient::onConnected);
    connect(&m_webSocket, &QWebSocket::disconnected, this, &EchoClient::closed);
    m_webSocket.open(url);
}

连接后,我们打开到指定网址的套接字。

void EchoClient::onConnected()
{
    if (m_debug)
        qDebug() << "WebSocket connected";
    connect(&m_webSocket, &QWebSocket::textMessageReceived,
            this, &EchoClient::onTextMessageReceived);
    m_webSocket.sendTextMessage(QStringLiteral("Hello, world!"));
}

当客户端连接成功后,我们连接到`onTextMessageReceived()`信号,并发送“Hello, world!”。如果与EchoServer连接,我们将收到相同的消息回显。

void EchoClient::onTextMessageReceived(QString message)
{
    if (m_debug)
        qDebug() << "Message received:" << message;
    m_webSocket.close();
}

每当接收到消息时,我们将其写入。

© 2024 Qt公司有限公司。此处包含的文档贡献的版权属于其各自的所有者。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可(FDL)版本1.3的条款授予的。Qt和相关的标志是芬兰和/或世界上其他国家的Qt公司注册商标。所有其他商标均为其各自所有者的财产。