Javascript Node.js-区分';连接';事件
我正在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) =&
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
}
});
感觉这不是一个好的解决方案,但可能已经足够好了,直到有人能告诉我更好的方法。套接字上不存在“断开连接”事件