有人可以指出我让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() 函数,并且您知道有"一些"数据可以从套接字读取。希望它有助于并回答您的问题。祝你好运!
你可以看看QWebSockets,它使用Qt实现websockets。我还构建了客户端和服务器 socket.io 类,这些类将很快开源。