c++ - 如何捕获 websocket 连接错误

标签 c++ qt websocket

我正在从 Qt/c++ 客户端打开一个 url,例如,

m_webSocket = new QWebSocket();
m_webSocket->open("wss://192.123.1.44:8087");

我想捕获连接中的任何错误。我怎么做? 我已连接到信号 QWebSocket:error(QAbstractSocket::SocketError error),但即使我的服务器未运行,我也从未触发过它。

编辑: 我正在连接到错误信号,如下所示,

m_webSocket = new QWebSocket();
connect(m_webSocket, SIGNAL(error(QAbstractSocket::SocketError error)), this, SLOT(onWebSocketError(QAbstractSocket::SocketError error)));
m_webSocket->open(url);

这似乎不起作用。

最佳答案

documentation 中所述:

Note: Signal error is overloaded in this class. To connect to this signal by using the function pointer syntax, Qt provides a convenient helper for obtaining the function pointer as shown in this example:

connect(webSocket, QOverload<QAbstractSocket::SocketError>::of(&QWebSocket::error),
[=](QAbstractSocket::SocketError error){ /* ... */ });

当然,除了 lambda 函数,您还可以连接到一个普通函数,但是 QOverload 部分很重要。

关于c++ - 如何捕获 websocket 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017388/

相关文章:

php - 如何让 Ratchet WebSocket 保持事件状态?

c++ - 从十六进制转换为二进制 C++

C++ pthreads/semaphores 不运行

c++ - 将文本文件读入矩阵

c++ - QSortFilterProxyModel 排序基于两个排序角色?

image - Qt jpg图像显示

ssl - 安全的 WebSockets wss 是否为 ://protocol encrypt client-to-server data?

c++ - Qt在不使用线程时从不同的线程设置父级

qt - Qml GridLayout如何指定列宽?

google-chrome - 使用XHR轮询时如何解决Chrome的6个连接限制