Node.js-区分“连接”事件中的服务器连接和断开连接

时间:2019-10-18 14:32:40

标签: javascript node.js

我正在使用select distinct no from YourTable yt1 where not exists ( select * from YourTable yt2 where yt1.no = yt2.no and yt2.error = 0 ) 在Node.js应用程序中创建服务器。 我将事件监听器添加到“连接”事件中,以便能够确定何时建立连接。到目前为止一切顺利。

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

net.createServer

如何确定连接是建立还是结束?

如果可能的话,我希望避免使用标记来跟踪状态。

谢谢!

3 个答案:

答案 0 :(得分:0)

p = r.exec(new String[]{ "file", "-bi", sPath, sFileName});

https://nodejs.org/api/http.html#http_event_close

答案 1 :(得分:0)

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

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

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

    socket.on('disconnect', () => {
        // first search client and  remove
    });
});

现在下一个问题是:我怎么知道哪个人断开了连接?

这个问题的答案不只是在过程中添加逻辑,而且您可以为保存客户端创建一个全局变量,当此人启动会话或连接到套接字时,该变量将注册在该变量中,而在断开连接时将其注册必须从上述变量中​​删除,这不是一个例子,但可能会有更好的方法。

答案 2 :(得分:0)

因此,对于这个似乎可行的问题,我幼稚的方法是使用getConnections,它会在每个连接事件中增加,并查看它是偶数还是偶数,以便能够确定它是已连接还是已断开:

server.on("connection", () => {
  server.getConnections((e, c) => {
    if (c % 2 === 0) {
      // Disconnected
    } else {
      // Connected
    }
  });

这似乎不是一个很好的解决方案,但在有人向我展示更好的方法之前,它可能已经足够好了。