Qt WebSockets,如何向客户端发送消息
Posted
技术标签:
【中文标题】Qt WebSockets,如何向客户端发送消息【英文标题】:Qt WebSockets, how to send a message to client 【发布时间】:2017-07-05 00:25:08 【问题描述】:我正在关注这个示例http://doc.qt.io/qt-5/qtwebsockets-echoserver-example.html,但我不知道在建立连接后如何向客户端发送消息。
这似乎有效,但仅当它位于另一个类的函数内时。
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");
【问题讨论】:
确保您运行 2 个单独的进程,并且客户端应该打开 QWebsocket 并监听 *received 信号。 doc.qt.io/qt-5/qwebsocket.html 当我第一次尝试时,它开始为我使用 sendTextMessage 服务器和 textMessageReceived 处理客户端的信号。现在,它可以在我们自己的服务器的生产代码中使用,更不用说“乒乓”了。 示例代码工作正常,回显消息也返回给客户端。我不明白我将 sendTextMessage 放在何处以及如何将消息从服务器发送到客户端。 e. G。在 MainWindow 中按下按钮后如何向客户端发送消息? 您必须运行 2 个 QWebsocket,而不是一个。一个发送TextMessage,另一个监听它的信号textMessageReceived。他们之间有一个特殊的服务器,以便推送工作。 【参考方案1】:我让它工作了。代码如下:
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");
【讨论】:
以上是关于Qt WebSockets,如何向客户端发送消息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WCF NetHttpBinding(WebSockets)通过服务器向所有客户端广播(推送)一个客户端发送的消息?
如果客户端更改了IP,WebSockets应用程序如何继续向客户端发送数据?
如何在烧瓶中发布请求后使用 websockets 向客户端发送警报