Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to check server life using QWebsocket ping pong.
Forum Updated to NodeBB v4.3 + New Features

How to check server life using QWebsocket ping pong.

Scheduled Pinned Locked Moved Solved General and Desktop
20 Posts 6 Posters 4.5k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Kayote

    @bd9a
    "I dont know how to get "if pong didnt received"."
    As @Christian-Ehrlicher mentioned, in this case you could just use a timer which is started when you send the ping, and then if no response has been received within x seconds you know that the server is most likely down.

    B Offline
    B Offline
    BD9a
    wrote on last edited by
    #11

    @kayote said in How to check server life using QWebsocket ping pong.:

    As @Christian-Ehrlicher mentioned, in this case you could just use a timer which is started when you send the ping, and then if no response has been received within x seconds you know that the server is most likely down.

    I dont know how to do this.

    1 Reply Last reply
    0
    • Christian EhrlicherC Online
      Christian EhrlicherC Online
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #12

      @bd9a said in How to check server life using QWebsocket ping pong.:

      I dont know how to do this.

      We won't write you your program. What exactly do you don't know? How to restart the timer? Did you read the QTimer detail documentation?

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      1
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #13

        Hi
        well you hook up
        void QWebSocket::pong(quint64 elapsedTime, const QByteArray &payload)
        to a slot / lambda
        then right after
        you do
        QWebSocket::ping(xxx)

        then set up a timer

        
        bool TimeOutbeforePong=false; // this should be a member of the class  owning the QWebSocket
        QTimer::singleShot(5000, this, [ & TimeOutbeforePong ](){      
              TimeOutbeforePong = true;
            ... do something...
          });
        

        if you get your Pong while TimeOutbeforePong is false, server is alive
        and you can ignore the timeout.

        or similar code.

        1 Reply Last reply
        1
        • K Kayote

          @bd9a
          "I dont know how to get "if pong didnt received"."
          As @Christian-Ehrlicher mentioned, in this case you could just use a timer which is started when you send the ping, and then if no response has been received within x seconds you know that the server is most likely down.

          B Offline
          B Offline
          BD9a
          wrote on last edited by BD9a
          #14

          @kayote said in How to check server life using QWebsocket ping pong.:

          and then if no response

          How my program can know if no response, there is no bool "pongReceived" true or false.

          @mrjj
          Trying to implement it to my program. brb

          mrjjM 1 Reply Last reply
          0
          • B BD9a

            @kayote said in How to check server life using QWebsocket ping pong.:

            and then if no response

            How my program can know if no response, there is no bool "pongReceived" true or false.

            @mrjj
            Trying to implement it to my program. brb

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by mrjj
            #15

            @bd9a
            well the timer will trigger after 5 seconds (or what you set it to)
            and if you did not see the PONG signal in the meantime, then
            server is not answering.

            You might want to make the timer a member so you can cancel/stop it but
            you can also just ignore the flag if you get your pong

            B 1 Reply Last reply
            1
            • mrjjM mrjj

              @bd9a
              well the timer will trigger after 5 seconds (or what you set it to)
              and if you did not see the PONG signal in the meantime, then
              server is not answering.

              You might want to make the timer a member so you can cancel/stop it but
              you can also just ignore the flag if you get your pong

              B Offline
              B Offline
              BD9a
              wrote on last edited by
              #16

              @mrjj
              I dont know connect

              void QWebSocket::pong(quint64 elapsedTime, const QByteArray &payload)
              

              to what?

                  timer = new QTimer(this);
                  connect(timer, SIGNAL(timeout()),this,SLOT(trying()));
                  timer->start(5000);
              
              void Socket::trying()
              {
                  bool TimeOutbeforePong=false; // this should be a member of the class  owning the QWebSocket
                  QTimer::singleShot(5000, this, [ & TimeOutbeforePong ](){
                        TimeOutbeforePong = true;
                        webSocket.open(QUrl("xxx")); // Can it be here?
                    });
              }
              
              1 Reply Last reply
              0
              • Christian EhrlicherC Online
                Christian EhrlicherC Online
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on last edited by
                #17

                @bd9a said in How to check server life using QWebsocket ping pong.:

                to what?

                To a function from you where you restart the timer...

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                1 Reply Last reply
                1
                • B Offline
                  B Offline
                  BD9a
                  wrote on last edited by
                  #18

                  I need to access "TimeOutbeforePong" from other function, so I added it as private member, and I got these errors:

                  private:
                      bool TimeOutbeforePong=false;
                  
                  void Socket::trying()
                  {
                      TimeOutbeforePong=false;
                      QTimer::singleShot(5000, this, [ & TimeOutbeforePong ](){ // TimeOutbeforePong in capture list does not name a variable
                            TimeOutbeforePong = true; // this cannot be implicitly captured in this context
                      });
                  }
                  
                  1 Reply Last reply
                  0
                  • B Offline
                    B Offline
                    BD9a
                    wrote on last edited by
                    #19

                    Could sbody help me?

                    1 Reply Last reply
                    0
                    • aha_1980A Offline
                      aha_1980A Offline
                      aha_1980
                      Lifetime Qt Champion
                      wrote on last edited by
                      #20

                      @bd9a

                      A short google for "lambda capture member variables" gave the following result:

                      https://stackoverflow.com/questions/7895879/using-member-variable-in-lambda-capture-list-inside-a-member-function

                      In short, you need to capture [this]:

                      QTimer::singleShot(5000, this, [this]() {

                      Regards

                      Qt has to stay free or it will die.

                      1 Reply Last reply
                      3
                      • KutyusK Kutyus referenced this topic on

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved