QWebSocket“未知错误”
Posted
技术标签:
【中文标题】QWebSocket“未知错误”【英文标题】:QWebSocket "Unknown Error" 【发布时间】:2017-03-09 01:53:30 【问题描述】:我一直在尝试使用 Qt websocket 类设置 websocket 客户端。 不幸的是,我无法完成第一步:将我的客户端连接到服务器。
我确信连接是可能的,因为 Go ws websocket client 和 C++ easywsclient library 都可以与服务器连接和接口。
我的代码的相关部分如下:
QWebSocket socket;
socket.open(QUrl("ws://localhost:9999"));
qDebug() << socket.error() << socket.errorString();
运行程序时,我收到以下(无用)消息:
QAbstractSocket::UnknownSocketError "Unknown error"
有没有办法澄清错误和/或解决问题?
附:虽然 easywsclient 库可以与服务器连接和交互,但它只做了一个边际工作,这就是我宁愿使用 Qt 类的原因。
【问题讨论】:
【参考方案1】:没有错误。 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 并终止连接。知道这里会发生什么吗? 更新:奇迹般的 websockets 已经开始工作了。似乎端口更改起到了作用。这是一个只影响我的本地问题。非常感谢您的所有帮助:)以上是关于QWebSocket“未知错误”的主要内容,如果未能解决你的问题,请参考以下文章
[提问]:“读取数据源出现未知错误:Serialization错误”?