Javascript 使用EventSource获取用户';什么是在线状态?

Javascript 使用EventSource获取用户';什么是在线状态?,javascript,php,eventsource,Javascript,Php,Eventsource,我使用EventSource方法获取我网站上活动用户的在线状态。 在本例中,在每个页面中插入以下JavaScript代码 var source=neweventsource(“set_online.php”) 因此,此代码连续执行set_online.php文件 在服务器端,即在set_online.php中执行以下代码 $query = "UPDATE my_db SET last_active = '{$current_time}' WHERE id = {$_SESSION["id"]}"

我使用EventSource方法获取我网站上活动用户的在线状态。 在本例中,在每个页面中插入以下JavaScript代码

var source=neweventsource(“set_online.php”)

因此,此代码连续执行
set_online.php
文件

在服务器端,即在
set_online.php中执行以下代码

$query = "UPDATE my_db SET last_active = '{$current_time}' WHERE id = {$_SESSION["id"]}";
                $result = mysqli_query($connection, $query);
现在我对此有两个担忧:

  • 由于数据库持续实时更新最后一个激活的\u,它会影响服务器负载吗
  • 由于连接是开放的,只要用户在网站上,它会创建漏洞吗

  • 苏格兰和南方能源公司不适合这一目的——或者至少不是为这一目的而设计的。SSE是从服务器到浏览器的恒定事件流

    不过,你的脚本会起作用的。PHP脚本将做一件事(更新数据库),然后退出。当它退出时,连接关闭。浏览器将看到连接已断开,几秒钟后将再次重新连接。当循环重复时

    关于你的两个问题: 1.它不是真正连续的,更多的是每3秒钟重新连接一次。服务器负载可能很大。 2.连接未持续打开;但如果是,它不会产生任何新的漏洞

    我将在JavaScript间隔上使用ajax调用,而不是SSE。这些优点:

    • 较旧的技术,因此更广泛的浏览器支持
    • 显式控制计时器间隔,因此可以控制延迟和服务器负载之间的平衡

      • 您的解决方案很繁重而且没有必要,更好的解决方案是扭转这种想法,让服务器将用户状态信息推送到您的客户端

        可以通过使用库(如)实现套接字来实现这一点。它实现起来非常简单,是一个更具可扩展性的解决方案

        基本上,当页面加载时,客户端和服务器之间会建立连接,当服务器想要与客户端通信时,他可以简单地发出一个事件,例如
        用户状态


        您的客户端只需收听此事件并相应地更新其视图。

        您能告诉我们如何实现socket.io吗?我在网上冲浪过,但没办法弄明白