Is this a true long polling?

前端 未结 1 1072
名媛妹妹
名媛妹妹 2020-12-22 13:15

After lot of trials,I am successfully able to maintain continous server connection with database. Now code keet cheking and show the messages,if there are new in database.<

1条回答
  •  眼角桃花
    2020-12-22 14:03

    Polling is a bit harder than a simple while : just because generally all things you output to the browser will be interpreted when complete. Your example is quite clear :

    success:function(data) {
        var json = data;
        $("#commidwin").append(json['msg']);
        last_msg_id = json["last_msg_id_db"];
        setTimeout("load_msgs()", 1000);
    },
    

    jQuery will wait until the response is complete to build your data variable and then will call your success callback.

    One way to create long-polling is to have a task and a follower :

    • the task is the "infinite" loop, it displays nothing but just catch and trigger events, put in a "box".

    • the follower is an ajax call made every X seconds, it looks inside the "box" filled by the task, and immediately act inside the page.

    Here is an example of long-polling, there is no follower, just an event (release) that stops the poll, but you'll get the idea :

     $time)
            {
                $result = htmlentities(file_get_contents('poll.txt'));
                $poll = false;
            }
    
            // Of course, else your polling will kill your resources!
            $number_of_tries++;
            sleep(1);
        }
    
        // Outputs result
        echo "Number of tries : {$number_of_tries}
    {$result}"; die(); } // Here we catch the release form if (isset($_GET['release'])) { $data = ''; if (isset($_GET['data'])) { $data = $_GET['data']; } file_put_contents('poll.txt', $data); die(); } ?>

    Give me some text here :



    Result after releasing polling :

    Demonstration : here.

    0 讨论(0)
提交回复
热议问题