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

jgwigjjp  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(85)

我正在遵循这个例子http://doc.qt.io/qt-5/qtwebsockets-echoserver-example.html,但我不知道如何在连接完成后向客户端发送消息。
这似乎是有效的,但只有当它在另一个类的函数中时。

void EchoServer::processTextMessage(QString message)
{

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

}

我应该把代码放在哪里/如何让它工作?
例如:在主窗口中按下按钮后,如何向客户端发送消息?
这是工作

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

}
nfs0ujit

nfs0ujit1#

我修好了。代码如下:

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

}
xoefb8l8

xoefb8l82#

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

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

  for (auto pClient : m_clients)
  {
    if (pClient)
      pClient->sendTextMessage("test");
  }
}

相关问题