Qt插件QtWebsocket不能使用waitForConnected方法

最近项目需要使用WebSocket来进行网络通信,在github上找到了QtWebsocket这个插件,编译和跑Demo都没什么难度,但是卡在了客户端建立连接这个过程上,自己的程序死活不能建立连接,而Demo一跑就通,详细比较了一下我的程序和Demo的区别,只不过我使用的是同步方式,Demo用的是异步方式,本质上并没有什么不同:

Demo

Client::Client(QWidget *parent) :
	QWidget(parent),
	ui(new Ui::Client) {
	ui->setupUi(this);
	wsSocket = new QtWebsocket::QWsSocket(this, NULL, QtWebsocket::WS_V13);
	QObject::connect(ui->connectButton, SIGNAL(pressed()), this, SLOT(connectSocket()));
}

void Client::connectSocket() {
    bool ok;
    QString ipAddress = QInputDialog::getText(this, tr("Client"), tr("Server IP:"), QLineEdit::Normal, "ws://localhost:80", &ok);
    ipAddress = ipAddress.trimmed();
    if (ok && !ipAddress.isEmpty()) {
        QString ip;
        quint16 port;
        if (ipAddress.contains(QRegExp(QLatin1String(":([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$")))) {
            QStringList splitted = ipAddress.split(':');
            port = splitted.takeLast().toUInt();
            ip = splitted.join(':');
        } else {
            ip = ipAddress;
            port = 80;
        }
        wsSocket->connectToHost(ip.toUtf8(), port);
    }
}

我的程序

//websocket连接的host需要以"ws://"开头
wsSocket->connectToHost(QString("ws://127.0.0.1"), port);
wsSocket->waitForConnected(3000);

后来经过测试,将wsSocket->waitForConnected(3000);加入到Demo中,Demo也不能建立连接,我才确认QtWebsocket在同步建立连接方法上有问题,将自己的程序改成异步建立连接后,连接得以成功建立。

记录自己遇到的坑,让别人走得稳一点。