【问题标题】:Qt WebSockets, how to send a message to clientQt WebSockets,如何向客户端发送消息
【发布时间】:2017-07-05 00:25:08
【问题描述】:

我正在关注这个示例http://doc.qt.io/qt-5/qtwebsockets-echoserver-example.html,但我不知道在建立连接后如何向客户端发送消息。

这似乎有效,但仅当它位于另一个类的函数内时。

void EchoServer::processTextMessage(QString message)
{

    m_clients.at(0)->sendTextMessage("test");

}

我应该把代码放在哪里/如何让它工作?

e。 G。在 MainWindow 中按下按钮后如何向客户端发送消息?

这是有效的

void EchoServer::processTextMessage(QString message)
{

      m_clients.at(0)->sendTextMessage("test");

}

这行不通

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_clients.at(0)->sendTextMessage("test");

} 

不是这个

void MainWindow::myclicked()
{

 m_clients.at(0)->sendTextMessage("test");

}

【问题讨论】:

  • 确保您运行 2 个单独的进程,并且客户端应该打开 QWebsocket 并监听 *received 信号。 doc.qt.io/qt-5/qwebsocket.html 当我第一次尝试时,它开始为我使用 sendTextMessage 服务器和 textMessageReceived 处理客户端的信号。现在,它可以在我们自己的服务器的生产代码中使用,更不用说“乒乓”了。
  • 示例代码工作正常,回显消息也返回给客户端。我不明白我将 sendTextMessage 放在何处以及如何将消息从服​​务器发送到客户端。 e. G。在 MainWindow 中按下按钮后如何向客户端发送消息?
  • 您必须运行 2 个 QWebsocket,而不是一个。一个发送TextMessage,另一个监听它的信号textMessageReceived。他们之间有一个特殊的服务器,以便推送工作。

标签: c++ qt websocket server client


【解决方案1】:

我让它工作了。代码如下:

QWebSocket *messageSocket;


void EchoServer::onNewConnection()
{
    QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection();
    connect(pSocket, &QWebSocket::textMessageReceived, this, &EchoServer::processTextMessage);
    connect(pSocket, &QWebSocket::disconnected, this, &EchoServer::socketDisconnected);


    m_clients << pSocket;

    messageSocket=pSocket;
}



void MainWindow::myclicked()
{
    if (messageSocket)
        {

             messageSocket->sendTextMessage("test");
        }

}

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 2020-09-06
    • 1970-01-01
    • 2022-07-01
    • 2018-09-26
    • 2019-01-26
    • 1970-01-01
    • 2015-04-07
    • 2019-04-29
    相关资源
    最近更新 更多