1

我有一个简单的客户端应用程序(使用QWebSocket),它想要连接到我的服务器应用程序(即QWebSocketServer)。

当我打开与关闭/不可用的 webSocketServer 的连接时,我的 webSocket 会在 30 秒后触发“断开连接”信号。

这很好,因为它可以帮助我了解服务器已关闭/不可用,因此我可以重试或警告用户该问题。

如果客户端和服务器之间的链接失败,也会发生同样的事情。即,在将 (sendBinaryMessage) 写入 webSocket 后,会在 30 秒后触发断开连接的信号。

我想知道默认计时器是什么QWebSocket以及如何修改它们?

我在哪里可以找到这样的信息/文件?webSockets 上的 Qt 文档根本没有提到这种行为!我应该阅读代码还是...?!

提前致谢

4

2 回答 2

0

我怀疑这些计时器中的任何一个都是 Qt 的一部分。这些计时器作为底层操作系统的 TCP/IP 实现的一部分存在。如果远程端没有响应,等待连接超时的套接字最终会变坏。如果在合理的时间后未确认发送的数据,则相同。

然而,Qt 异步执行所有操作,并使用信号和插槽在发生某些事情时通知您。这意味着如果您想缩短超时,最简单的方法是使用QTimer与您并行运行的a QAbstractSocket,如果计时器在套接字发出响应信号之前超时,您可以采取适当的措施。

如果做不到这一点,可能会有一些套接字选项允许您根据自己的喜好设置 TCP 连接上的各种超时。

于 2018-01-30T14:45:40.897 回答
0

来自QWebSocket

这个类是在QAbstractSocket之后建模的。

QAbstractSocket反过来继承自QIODevice.

这些类的文档有一些关于超时的信息。具体来说,您可以在这里和那里看到默认的 30 秒弹出。

另一个要看的地方是QObject的文档(QWebSocket 继承了它)。也许通过重写QObject与计时器相关的虚函数,您可以以某种方式进入这些机制之间,并可能更改超时。

很抱歉不能提供更多帮助。

于 2018-01-30T14:23:51.507 回答