Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测用户中止/导航WebSocket_Javascript_Php_Websocket_Phpwebsocket - Fatal编程技术网

Javascript 检测用户中止/导航WebSocket

Javascript 检测用户中止/导航WebSocket,javascript,php,websocket,phpwebsocket,Javascript,Php,Websocket,Phpwebsocket,我正在试验websockets,并希望检测用户是否已从页面导航到PHP流脚本而不运行。其他一切都很好 我尝试做的一切都不会阻止PHP脚本在本地使用Xampp运行 我目前正在使用javascript的beforeunload,PHP的连接被中止,连接状态甚至文件存在,这是目前唯一有效的!!!。 在脚本存在或我重新启动apache之前,我无法重新加载页面,但我必须进行中止检测。Firebug报告套接字脚本已中止,但PHP只是保持ion运行。谢谢你的帮助 我的javascript看起来像这样 func

我正在试验websockets,并希望检测用户是否已从页面导航到PHP流脚本而不运行。其他一切都很好

我尝试做的一切都不会阻止PHP脚本在本地使用Xampp运行

我目前正在使用javascript的beforeunload,PHP的连接被中止,连接状态甚至文件存在,这是目前唯一有效的!!!。 在脚本存在或我重新启动apache之前,我无法重新加载页面,但我必须进行中止检测。Firebug报告套接字脚本已中止,但PHP只是保持ion运行。谢谢你的帮助

我的javascript看起来像这样

function socket_open(){
    if(!!window.EventSource){
        var websocket = new EventSource('./ajax/progress.php');
        websocket.addEventListener('message', function(e){
            var data = JSON.parse(e.data);
            console.log(data);
        },false);
        $(window).bind('beforeunload', function(){
            websocket.onclose = function(){};
            websocket.close();
        });
    }
}
我的PHP是这样的。 ./ajax/progress.php

function get_task_progress(){
    $output = array();

    //conditionally create some output

    if(!empty($output)){
        echo 'data: '.json_encode($output)."\n\n";
        ob_flush();
        flush();
    }
    sleep(1);
    if(!connection_aborted() && connection_status()==0 && file_exists('1.txt')){
        get_task_progress();
    }
}

我似乎已经解决了这个问题,但在测试实时连接之前,在每个请求上都会回显并刷新“无更新”状态

if(!empty($output)){
    $tasks_state = $tasks_new;
    echo 'data: '.json_encode($output)."\n\n";
}else{
    echo 'data: '.json_encode(array('e'=>0))."\n\n";
}

ob_flush();
flush();
sleep(1);
if(!connection_aborted() && connection_status()==0){
    get_task_progress();
}