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

} 

ここで、コードを機能させるにはどうすればよいですか?

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で私のために働き始めました、そして、初めて試みたときにすぐにクライアントのためにsignalMessageReceivedがシグナルを処理しました。そして今、これは "ping-pong"はもちろんのこと、私たち自身のサーバーで生産コードで動作します。 – AlexanderVX

+0

サンプルコードは正常に動作し、エコーメッセージもクライアントに返されます。私は、どこから、どのようにsendTextMessageを使ってサーバからクライアントにメッセージを取得するのか分かりません。 e。 g。 MainWindowでボタンを押した後にクライアントにメッセージを送信する方法は? – coding4fun

+0

2台のQWebsocketを走らせる必要があります。 1つはsendTextMessageを行い、もう1つはその信号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"); 
     } 

} 
関連する問題