使用 Xampp 进行长轮询

Posted

技术标签:

【中文标题】使用 Xampp 进行长轮询【英文标题】:Long polling using Xampp 【发布时间】:2018-11-16 01:36:30 【问题描述】:

我有一个网页,它建立与 linux 主机的 ssh 连接并执行脚本。我想对在 linux 主机上运行的结果进行长轮询。

我使用 Xampp 作为 localhost 服务器。

这是我的 JS:

$(document).ready(function()   

$(sub).click(function() 

    alert("connecting to host")
            $.ajax(
                type:'GET',
                url:'/cgi-bin/rfc.py', 
                async: false ,
                dataType: 'html',
                cache: false,
                data: $('form').serialize(),
                success:function (data) 
                     $('#output').html(data);


               


        );

        ) ;
);

在这种情况下,我只有在脚本完成执行后才能得到结果。 我想在网页中每 15 秒查看一次输出(每 15 秒轮询一次)。任何建议都会对我很有帮助。 提前谢谢你。

【问题讨论】:

关于 ajax 调用的 setInterval?还是简单的浏览器刷新?取决于页面的其他功能。但基本上你可以每 15 秒使用一次 ajax 函数,而不是 onclick。 你的意思是在“url:'/cgi-bin/rfc.py'”上说setInterval?? 【参考方案1】:

基本间隔类似于:

// Save the interval so we can stop it if needed by clearing the interval
let interval = null;
// Interval delay constant. 15s equals 15000 ms.
const DELAY = 15000;
// Render the output to the form.
const render = function( data ) 
    $( '#output' ).html( data );
;
// Trigger the ajax call every DELAY seconds.
const start_interval = function() 
    interval = setInterval( function() 
        const data = $('form').serialize();
        $.ajax(
            type:'GET',
            url:'/cgi-bin/rfc.py',
            dataType: 'html',
            cache: false,
            data: data,
            success: render
        );
    , DELAY );
;
// Start using the interval once the webpage is loaded.
$(document).ready( start_interval );

【讨论】:

非常感谢您。 !这会在每次延迟后运行我放置在“url”中的脚本。我需要脚本只运行一次。然后在每次延迟后获取该脚本的结果。你能帮我解决这个问题吗? 我不明白你的意思。如果只调用一次ajax,脚本的结果不会改变。

以上是关于使用 Xampp 进行长轮询的主要内容,如果未能解决你的问题,请参考以下文章

使用 Xampp 进行长轮询

使用 php curl 进行长轮询

轮询长轮询长连接socket连接WebSocket

轮询长轮询长连接socket连接WebSocket

Comet,使用 jquery 教程进行长轮询 [关闭]

短连接长连接和短轮询长轮询