Qt连接到WebSockets服务器

时间:2012-04-11 16:41:16

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

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

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

2 个答案:

答案 0 :(得分:3)

在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 _-&gt; write(...)。 因此,只要数据到达,readReady()信号就会触发readTcpData()函数,并且您知道可以从套接字读取“某些”数据。 希望它有助于解答您的问题。祝你好运!

答案 1 :(得分:0)

您可以查看使用Qt实现websockets的QWebSockets。我还构建了客户端和服务器socket.io类,它们很快就会开源。