【发布时间】:2020-04-23 13:47:48
【问题描述】:
我以 Qt 存储库中的 EchoClient 为例:
我只做了一个修改,我改变了我想连接的 URL 地址:
EchoClient client(QUrl("wss://echo.websocket.org"), true);
它不起作用,预期的结果是 onConnected 回调将触发, 看看下面的代码。
我添加了错误回调:
EchoClient::EchoClient(const QUrl &url, bool debug, QObject *parent) :
QObject(parent),
m_url(url),
m_debug(debug)
{
m_webSocket = new QWebSocket;
if (m_debug)
qDebug() << "WebSocket server:" << url;
connect(m_webSocket, &QWebSocket::connected, this, &EchoClient::onConnected);
connect(m_webSocket, &QWebSocket::disconnected, this, &EchoClient::closed);
connect(m_webSocket, QOverload<QAbstractSocket::SocketError>::of(&QWebSocket::error),
[=](QAbstractSocket::SocketError error)
{
qDebug() << "error: " << error;
});
QNetworkRequest request=QNetworkRequest(QUrl(url));
m_webSocket->open(request);
}
我看到的是 Qt 总是返回
QAbstractSocket::UnsupportedSocketOperationError (10) QAbstractSocket::SocketError
我做错了什么?这个错误的原因是什么?
【问题讨论】:
-
在带有 Qt 5.14.2 的 Linux 中,它可以正常工作: WebSocket 服务器:QUrl("wss://echo.websocket.org") WebSocket connected 收到消息:“Hello, world!”
-
@eyllanesc 是的,看来是我的设置有问题,我在 Win8.1 上,到目前为止,我从 Qt 得到了详细描述:此平台不支持 SSL 套接字
-
@eyllanesc 是的,我看到了这个,但是根据 DEpendency Walker 我的应用程序不依赖于 ssl.lib,我不想从源代码构建 Qt,所以我继续谷歌搜索
-
我建议您在您的操作系统上安装 ssl(将其目录添加到环境变量的 PATH 中)