Qt WebSockets,如何向客户端发送消息

问题描述 投票:0回答:2

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

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

void EchoServer::processTextMessage(QString message)
{

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

}

我应该在哪里/如何放置代码才能使其正常工作?

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

这正在工作

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");

}
c++ qt websocket server client
2个回答
0
投票

我成功了。这是代码:

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");
        }

}

0
投票

如果您有多个 WebSocket 客户端,以下代码将向列表中的每个客户端(如果有)发送一条消息:

void MainWindow::myclicked()
{
  if (m_clients.isEmpty())
    return;

  for (auto pClient : m_clients)
  {
    if (pClient)
      pClient->sendTextMessage("test");
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.