Node.js 当新客户端连接和断开连接时,是否有接收事件的方法?

Node.js 当新客户端连接和断开连接时,是否有接收事件的方法?,node.js,mqtt,mosquitto,Node.js,Mqtt,Mosquitto,我们使用node作为服务器,使用mqtt作为库 我们将mosquitto安装为web套接字的brocker 现在我们必须跟踪记录新客户端连接和断开连接的时间,但问题是我们无法获取任何事件 那么,有什么办法可以实现这一点呢 const mqttServer = require('mqtt'); const clientId = appName + "_" + moment().valueOf(); const conOptions = { clientId, username:

我们使用node作为服务器,使用mqtt作为库

我们将mosquitto安装为web套接字的brocker

现在我们必须跟踪记录新客户端连接和断开连接的时间,但问题是我们无法获取任何事件

那么,有什么办法可以实现这一点呢

const mqttServer = require('mqtt');

const clientId = appName + "_" + moment().valueOf();
const conOptions = {
    clientId,
    username: mqtt.user,
    password: mqtt.pass,
    keepalive: 10,
    clean: false,
    rejectUnauthorized: false
};

const conUrl = mqtt.uri;
const mqttClient = mqttServer.connect(conUrl, conOptions);

mqttClient.on("error", (err) => {
    logger.error(`${chalk.red('✗')} MQTT Error : `, err);
});

mqttClient.on('offline', () => {
    logger.error(`${chalk.red('✗')} MQTT Offline`);
});

mqttClient.on('reconnect', () => {
    logger.error(`${chalk.red('✗')} MQTT Reconnect`);
});

mqttClient.on('connect', () => {
    logger.info(`${chalk.green('✓')} MQTT Connected with ClientID ${chalk.yellow(clientId)}`);
});

mqttClient.on('message', (topic, message) => {
    logger.error(`New message in MQTT : ${message.toString()} on ${topic}`);
});

为什么不让每个客户端在连接/断开连接时发布自己的消息呢

这允许您精确控制消息中的内容

您可以在通知客户端断开连接之前发送断开连接消息

此外,如果由于崩溃/网络故障导致消息断开连接,您还可以使用最后的遗嘱和遗嘱让代理(在KeepAlive过期后)代表客户端发布消息


这项技术适用于任何浏览器。

所以一切正常,但您没有在
connect
事件中实现日志消息?(我在示例代码中没有看到
断开连接
)不,我想在其他客户端连接或断开连接时获取事件。该数据仅对代理(您连接到的服务器)可用,而不是发布者/订阅者(您发布的代码)。例如,在
clientConnected
事件中使用该事件。您能描述一下我们如何使用mosca吗?网络上有很多这样的方法,但让您的代理也会增加额外的工作和维护。使用@hardillb解决方案,如果经纪人在您的控制下或代表客户发布
disconnect
信息(如果不要求),您可以获得
connect
信息和
disconnect
信息。当我尝试添加
通知true
时,MOSQUITO没有启动,即使我设置了
log\u dest file\u path
,它也没有启动。您能帮我们确定应该是什么错误吗?这与您在此处提出的问题完全不同。问一个新问题,包括您正在使用的配置文件和显示的错误