Search code examples
jqueryruby-on-railspollingturbolinks

Long polling using jQuery in Rails with turbolink


I am following an instruction to create long polling using jQuery AJAX request here. Below is my code:

:javascript
  (function poll(){
      $.ajax({ url: $("comment").data("url"), success: function(data){
          alert(data.comment);
      }, dataType: "json", complete: poll, timeout: 8000 });
  })();

But instead of timeout for 8 seconds, this code polls continuously. Am I doing something wrong, or does this somehow conflict with turbolink gem that I am using with Rails 3.2?

Thank you.


Solution

  • why it polls again because you are calling the function poll again in the complete callback

        (function poll(){
              $.ajax({ url: $("comment").data("url"), success: function(data){
                  alert(data.comment);
              }, dataType: "json", complete: poll, timeout: 8000 });
    -----------------------------------------^ //here
          })();
    

    also dont confuse the timeout with setTimeout, here timeout means that if the ajax call does not return within 8 seconds it will trigger the error call back

    LIVE DEMO