2017-07-05 127 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"); 
     } 

} 
相關問題