Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 Node.js-区分';连接';事件_Javascript_Node.js - Fatal编程技术网

Javascript Node.js-区分';连接';事件

Javascript Node.js-区分';连接';事件,javascript,node.js,Javascript,Node.js,我正在Node.js应用程序中使用net.createServer创建服务器。 我在“连接”事件中添加了一个事件侦听器,以便能够确定何时建立了连接。到目前为止一切顺利 问题是,当我断开连接时,它似乎会再次触发“连接”事件!并且没有“断开”事件,所以我不知道如何知道它是连接的还是断开的 const server = createServer({ allowHalfOpen: true }, (socket) => { this._socket.on("data", (buffer) =&

我正在Node.js应用程序中使用
net.createServer
创建服务器。 我在“连接”事件中添加了一个事件侦听器,以便能够确定何时建立了连接。到目前为止一切顺利

问题是,当我断开连接时,它似乎会再次触发“连接”事件!并且没有“断开”事件,所以我不知道如何知道它是连接的还是断开的

const server = createServer({ allowHalfOpen: true }, (socket) => {
  this._socket.on("data", (buffer) => {
    // ...
  });

  this._socket.on("end", () => {
    // ...
});

server.on("connection", () => {
  console.log("Connected or Disconnected!")
});
如何确定连接是已建立还是已结束

如果可能的话,我想避免让国旗跟踪国家

谢谢

server.on("close", () => {
  console.log("Disconnected!")
});

在连接侦听事件中,有一个断开连接的侦听事件:

var clients = [];
server.on('connection', (socket) => {

    // add client
    clients.push({id:15, name:'client15'}); 

    socket.on('disconnect', () => {
        // first search client and  remove
    });
});
现在下一个问题是:我如何知道哪个人断开了连接


这个问题的答案不仅仅是给流程添加逻辑,您还可以为save client创建一个全局变量,当用户启动会话或连接到套接字时,该变量将被注册到该变量中,当该变量断开连接时,必须将其从所述变量中取出,这不只是一个例子,但可能有更好的方法。

因此,对于这个问题,我最天真的方法似乎是使用getConnections,它会在每个连接事件中增加,并查看它是均匀的还是不均匀的,以便能够确定它是连接的还是断开的:

server.on("connection", () => {
  server.getConnections((e, c) => {
    if (c % 2 === 0) {
      // Disconnected
    } else {
      // Connected
    }
  });
感觉这不是一个好的解决方案,但可能已经足够好了,直到有人能告诉我更好的方法。

套接字上不存在“断开连接”事件