我正在遵循这个示例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");
}
我成功了。这是代码:
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");
}
}
如果您有多个 WebSocket 客户端,以下代码将向列表中的每个客户端(如果有)发送一条消息:
void MainWindow::myclicked()
{
if (m_clients.isEmpty())
return;
for (auto pClient : m_clients)
{
if (pClient)
pClient->sendTextMessage("test");
}
}