QWebSocket“未知错误”

问题描述:

我一直在试图设置一个使用Qt websocket类的websocket客户端。 不幸的是,我还没有能够完成第一步:将我的客户端连接到服务器。QWebSocket“未知错误”

我确定连接是可能的,因为Go ws websocket client和C++ easywsclient library都可以连接并与服务器连接。

我的代码的相关部分如下:

QWebSocket socket; 
    socket.open(QUrl("ws://localhost:9999")); 
    qDebug() << socket.error() << socket.errorString(); 

运行程序时,我得到以下(无用)消息:

QAbstractSocket::UnknownSocketError "Unknown error" 

有什么办法,以澄清错误和/或解决问题?

P.S.虽然easywsclient库可以连接并与服务器连接,但它只做一个边缘工作,这就是为什么我更愿意使用Qt类。

没有错误。 open()是异步的。将connected(),disconnected(),error(),textMessageReceived()信号连接到QObject派生对象的插槽。或者使用一些lambdas如果它是一个非常基本的应用程序:

QWebSocket socket; 
QObject::connect(&socket, &QWebSocket::connected, [] { qDebug() << "connected"; }); 
QObject::connect(&socket, &QWebSocket::error, [](QAbstractSocket::SocketError error) { qDebug() << error; }); 
socket.open(QUrl("ws://localhost:9999")); 
+0

谢谢,我没有意识到open()是异步的。我已经用lambda插槽以及实际正确的插槽尝试了您的代码,但我的客户端仍无法连接到服务器。使用Wireshark进行调试后,我发现在初次握手之后,客户端立即发送FIN,ACK并终止连接。任何想法可能会发生在这里? – nov1943

+0

更新:奇迹般的websockets已经开始工作。看起来端口改变了诀窍。这是一个只影响我的地方性问题。非常感谢您的帮助:) – nov1943