c++ - Qt 连接到 WebSockets 服务器

标签 c++ qt node.js websocket socket.io

有人能给我指出正确的方向,让 Qt 连接到运行 Socket.io 服务器的 Node.JS 吗?

我找到了将 Qt 作为服务器运行的示例,但没有一个读回数据。

最佳答案

在 Qt 中至少有两种方法可以做到这一点。使用阻塞或非阻塞调用。如果您使用非阻塞调用,则您可以将信号“连接”到您正在使用的 TcpSocket 类的插槽。当一些数据到达时,您会触发一个事件/回调。这不是一个完整的示例:

在您的 .h 文件中声明

#include <QtNetwork>
...
class MyClient : public QObject
{
  std::unique_ptr<QTcpSocket> tcpSocket_;
...
public slots:
  void readTcpData();
...

然后在您的 .cpp 文件中执行以下操作:

MyClient::MyClient()
{
  tcpSocket_ = std::unique_ptr<QTcpSocket>(new QTcpSocket(this));
  connect(tcpSocket_.get(), SIGNAL(readyRead()), this, SLOT(readTcpData()));
}

void MyClient::readTcpData()
{
  QByteArray rawData = tcpSocket_->readAll();
  QString textData(rawData);
... do something with the received data.
}

要写入数据,可以使用 tcpSocket_->write(...)。 因此,每当数据到达时,readReady() 信号就会触发 readTcpData() 函数,并且您知道有“一些”数据可供从套接字读取。 希望它能帮助并回答您的问题。祝你好运!

关于c++ - Qt 连接到 WebSockets 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110254/

相关文章:

c++ - 是否有必要定义来自不同类的 move 构造函数?

c++ delete[] 二维数组导致堆损坏

c++ - 控制台应用去向c++

qt - QObject 的模糊析构函数?

javascript - 将新数据推送到外部 JSON 文件

javascript - OpenAI ChatGPT (GPT-3.5) API 错误 404 : "Request failed with status code 404"

node.js - Express.js req.ip 正在返回::ffff:127.0.0.1

c++ - OSX 上的 GCC 5、6 和 7 不支持 uint

javascript - 使用 PySide QtCore.Slot 装饰器的多个参数

c++ - 从 QGLPixelBuffer 获取深度缓冲区