单击一个按钮后为所有连接的用户重新加载页面

问题描述 投票:0回答:1

我正在尝试为所有连接的用户刷新一个指定的页面,其中一个单击按钮,这可能吗?我正在用html,js和php开发。

javascript php html ajax reload
1个回答
0
投票

您需要other个用户知道其中一个何时单击按钮。

正如@balzacLeGeek所观察到的,这是Web套接字的工作。但是您也可以在AJAX中执行此操作,或多或少使用这样的暂停的AJAX调用:

var refresher = function() {
    $.post('check-status.php').then(reply => {
        if (reply.pressed) {
            // do_reload();
        } else {
            // display some small animation to let user know we checked
        }
        // Schedule another round.
        window.setTimeout(refresher, 10);
    });
};

检查状态功能会被连续调用,这将导致系统上的负载无法接受。但是由于服务器返回[,我们可以像这样实现它:

<?php $pressed = false; for ($sec = 0; $sec < 60; $sec++) { // ... check whether anyone pressed the button ... if (file_exists('pressed.txt')) { // return immediately. $pressed = true; break; } sleep(1); } header("Content-Type: application/json;charset=UTF-8"); die(json_encode([ 'status' => 'success', 'pressed' => $pressed ]);
通话被

已挂起长达60秒或直到有人按下按钮;在这种情况下,在一秒钟之内,所有挂起的呼叫都会返回,并且所有用户的屏幕都会重新加载;然后他们立即发出另一个呼叫,等待下一次按下,依此类推。

[您可能想利用暂停时间,或实施setInterval看门狗,以确保正确发出更新程序调用(如果一个调用失败,则该客户端的整个周期停止;该客户端处于“死状态”。因此,刷新之后您设置了一个全局时间戳记变量,并且setInterval看门狗函数验证该时间戳记不超过暂停时间再加上合理的余量,例如2秒,如果是,则看门狗仅调用refresher()重新启动周期,甚至显示简短的动画“您的Internet连接有问题”)。

被按下的功能只是根据按钮的按下来创建一个文本文件。或者,您可以使用数据库,共享内存区域,Redis或其他任何东西。


0
投票
当用户单击按钮时,您可以使用一个称为redirect()的JavaScript方法,该方法将重定向到您在redirect方法中提到的特定路由。
© www.soinside.com 2019 - 2024. All rights reserved.