我有一个简单的客户端应用程序(使用QWebSocket
)想要连接到我的服务器应用程序(即QWebSocketServer
)。
当我打开与关闭/不可用的webSocketServer的连接时,我的webSocket会在30秒后触发“断开连接”信号。
这很好,因为它有助于我了解服务器已关闭/不可用,因此我可以重试或警告用户该问题。
如果客户端和服务器之间的链接失败,则会发生同样的事情。即在写入(sendBinaryMessage)到webSocket之后导致断开的信号在30秒后被触发。
我想知道QWebSocket
中的默认计时器是什么以及如何修改它们?
我在哪里可以找到此类信息/文档? webSockets上的Qt文档根本没有提到这种行为!我应该阅读代码还是......?!
提前致谢
答案 0 :(得分:0)
来自QWebSocket:
此课程以QAbstractSocket为基础建模。
QAbstractSocket
继承自QIODevice
。
这些类的文档包含有关超时的一些信息。 具体来说,你可以看到这里和那里弹出30秒的默认值。
另一个值得关注的地方是QObject
的文档(QWebSocket继承它)。也许通过覆盖QObject
与计时器相关的虚函数,您可以以某种方式介入这些机制之间并可能更改超时。
很抱歉没有更多的帮助。
答案 1 :(得分:0)
我怀疑这些计时器中的任何一个都是Qt的一部分;这些定时器作为底层操作系统TCP / IP实现的一部分存在。如果远程端没有响应,则等待连接超时的套接字最终会变坏。如果发送的数据在合理的时间后没有确认,则相同。
然而,Qt会异步完成所有操作,并利用信号和插槽在发生事件时通知您。这意味着如果你想缩短超时,最简单的方法就是使用与你QTimer
并行运行的QAbstractSocket
,如果定时器在套接字发出响应之前超时,你可以然后采取适当的行动。
如果失败,可能会有一些套接字选项允许您根据自己的喜好设置TCP连接上的各种超时。