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"));
谢谢,我没有意识到open()是异步的。我已经用lambda插槽以及实际正确的插槽尝试了您的代码,但我的客户端仍无法连接到服务器。使用Wireshark进行调试后,我发现在初次握手之后,客户端立即发送FIN,ACK并终止连接。任何想法可能会发生在这里? – nov1943
更新:奇迹般的websockets已经开始工作。看起来端口改变了诀窍。这是一个只影响我的地方性问题。非常感谢您的帮助:) – nov1943