У меня есть простое клиентское приложение (использующее QWebSocket
) который хочет подключиться к моему серверному приложению (т.е. QWebSocketServer
).
Когда я открываю соединение с webSocketServer, который отключен / недоступен, мой webSocket запускает сигнал «отключено» через 30 секунд.
Это хорошо, так как помогает мне понять, что сервер недоступен / недоступен, поэтому я могу повторить или предупредить пользователя о проблеме.
Если связь между клиентом и сервером не работает, происходит то же самое. т.е. после записи (sendBinaryMessage) в webSocket вызывает отключенный сигнал через 30 секунд.
Я хотел бы знать, какие таймеры по умолчанию в QWebSocket
и как я могу их изменить?
Где я могу найти такую информацию / документацию? В документации Qt по webSockets это поведение вообще не упоминается! Должен ли я прочитать код или …?!
заранее спасибо
От QWebSocket:
Этот класс был смоделирован после QAbstractSocket.
QAbstractSocket
в свою очередь наследует от QIODevice
,
Документация этих классов содержит некоторую информацию о тайм-аутах.
В частности, вы можете увидеть всплывающие 30 секунд по умолчанию здесь и там.
Другое место, чтобы посмотреть на это QObject
документация (QWebSocket наследует ее). Возможно, переопределив QObject
Виртуальные функции, связанные с таймером, вы можете каким-то образом получить между этими механизмами и, возможно, изменить время ожидания.
Извините, что не могу помочь.
Я сомневаюсь, что любой из этих таймеров является частью Qt; эти таймеры существуют как часть реализации TCP / IP базовой операционной системы. Сокет, ожидающий подключения к тайм-ауту, в конечном итоге выйдет из строя, если удаленный конец не ответит. То же самое, если отправленные данные не подтверждаются в течение разумного периода времени.
Qt, однако, делает все асинхронно и использует сигналы и слоты, чтобы уведомить вас, когда что-то произошло. Это означает, что если вы хотите сократить время ожидания, самый простой способ сделать это — использовать QTimer
который работает параллельно с вами QAbstractSocket
Если таймер истекает до того, как сокет сигнализирует о своем ответе, вы можете предпринять соответствующие действия.
В противном случае могут быть некоторые параметры сокетов, которые позволяют вам устанавливать различные таймауты в вашем TCP-соединении по своему вкусу.