2017-07-05 86 views
0

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

这似乎工作,但只有当它在另一个类的功能内。

void EchoServer::processTextMessage(QString message) 
{ 

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

} 

Where/How do I put the code to get it working?

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

} 
+0

确保你运行2个独立的进程,客户端应该打开QWebsocket并收听*收到的信号。 http://doc.qt.io/qt-5/qwebsocket.html当我第一次尝试时,它开始为我服务于sendTextMessage服务器和textMessageReceived为客户端处理的信号。现在,我们用自己的服务器在生产代码中工作,更不用说“乒乓球”了。 – AlexanderVX

+0

示例代码正常工作,并且echo消息也返回给客户端。我不明白我在哪里以及如何将sendTextMessage从服务器获取消息到客户端。即G。在MainWindow中按下按钮后如何向客户端发送消息? – coding4fun

+0

你必须有2个QWebsocket的运行,而不是一个。一个发送sendTextMessage,另一个发送信号textMessageReceived。他们之间有一个特殊的服务器,以便推送工作。 – AlexanderVX

回答

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

} 
相关问题