Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js .on(“关闭”)运行,即使用户未关闭_Node.js_Stream_Client - Fatal编程技术网

Node.js .on(“关闭”)运行,即使用户未关闭

Node.js .on(“关闭”)运行,即使用户未关闭,node.js,stream,client,Node.js,Stream,Client,因此,我有一个脚本,当用户关闭或断开与流的连接时,它需要运行一个脚本 我遇到的问题如下: 1) 下面的脚本似乎在连接到页面后立即运行 res.on("close", function() { console.log(ip+" client closed") var update = {'$set':{ "endtime":Date.now() }}, options = { upsert: true}; Listeners.upd

因此,我有一个脚本,当用户关闭或断开与流的连接时,它需要运行一个脚本

我遇到的问题如下:

1) 下面的脚本似乎在连接到页面后立即运行

 res.on("close", function() {

     console.log(ip+" client closed")

     var update = {'$set':{
      "endtime":Date.now()
     }},
    options = { upsert: true};

    Listeners.update(userData, update, options, function(error, result) {
      if (!error) {

      }
      else{
       console.log(error);
      }
  });
1a)当用户关闭页面时,它会再次运行(正确)

那么,我如何确保它只在用户断开连接时运行

当用户连接时,是否有一个功能?我希望像。on(“开放”)——但这对我来说不起作用

res来自

router.get('/:stationname', (req, res) => {
在基本形式中,这就是我需要的:

a) 当用户进入页面时,它会检查数据库并保存其UUID


b) 当用户离开(关闭页面)时,它会随着用户退出的时间进行更新。

请显示更多代码上下文。什么是
res
以及它来自哪里?@jfriend00 res来自路由器-路由器.get('/:stationname',(req,res)=>{我想您可能不明白这是如何工作的。当用户转到浏览器中的特定URL时,浏览器会向目标服务器发送GET请求。这会打开到服务器的TCP连接,然后通过该TCP连接发送HTTP命令。当服务器接收到该命令时,它会将请求的内容发送到浏览器和目标服务器然后通过与服务器的连接完成浏览器。连接的生命周期与用户在浏览器中特定页面上的时间之间没有任何关系。现在,更高级版本的HTTP试图保持连接活动和/或通过同一个c连接。但是,连接的生命周期与用户在该页面上停留的时间无关。我建议您问一个问题,了解您真正想要实现的目标。我所知道的跟踪用户何时离开页面的唯一可靠方法是在浏览器和服务器之间使用webSocket连接,浏览器将自动调用当页面关闭时,y关闭该webSocket(无论是被新页面替换、选项卡关闭还是浏览器关闭)。