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

我正在我的 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!")

});

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


如果可能的话,我想避免使用标志来跟踪状态。


茅侃侃
浏览 278回答 3
3回答

largeQ

在连接监听事件中,有一个用于断开连接的监听事件:var clients = [];server.on('connection', (socket) => {    // add client    clients.push({id:15, name:'client15'});     socket.on('disconnect', () => {        // first search client and  remove    });});现在下一个问题是:我怎么知道哪个人断开了连接?这个问题的答案不仅仅是将逻辑置于流程中,您可以为保存客户端创建一个全局变量,当此人启动会话或连接到套接字时,它会注册在该变量中,并且当它断开连接时必须采取在上述变量中,这不是一个例子,但可能有更好的方法。

守着一只汪

所以我对这个似乎有效的问题的天真方法是使用 getConnections,它会在每个连接事件上增加,并查看它是均匀还是不均匀,以便能够确定它是连接还是断开:server.on("connection", () => {  server.getConnections((e, c) => {    if (c % 2 === 0) {      // Disconnected    } else {      // Connected    }  });感觉这不是一个好的解决方案,但也许足够好,直到有人可以向我展示更好的方法。

www说

server.on("close", () => {  console.log("Disconnected!")});https://nodejs.org/api/http.html#http_event_close
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript