Android uncaughtException:缺少数据包mqtt nodejs
我正在其中一个应用程序中使用安装在ubuntu机器上的节点模块mqtt和MOSQUITO。有一段时间我在服务器上出错,即丢失了数据包。当我搜索它时,我发现这个错误发生在没有找到客户端id或者我们试图连接已经连接的客户端时 我们在客户端使用android,并且 设置QOS级别:2 结论:错误 我们在服务器端所做的是,我们有一些用户是彼此的朋友,因此我们为每个用户创建客户端对象,因为他们是我们的逻辑中的朋友。通过那里的客户端id,然后连接他们,然后订阅他们,然后断开客户端。所以当用户第一次没有从客户端建立连接时,我们收到了消息,因为我们已经在服务器端一次订阅了通道。那个运行得很好,我们收到了消息,因为客户端在第一时间并没有连接。 还有一个条件是,当客户端刷新列表时,我们会重复上面定义的服务器端代码 做客户 连接它们 然后订阅这个频道 而不是断开连接 订阅连接和断开客户端的代码为:-Android uncaughtException:缺少数据包mqtt nodejs,android,node.js,mqtt,mosquitto,Android,Node.js,Mqtt,Mosquitto,我正在其中一个应用程序中使用安装在ubuntu机器上的节点模块mqtt和MOSQUITO。有一段时间我在服务器上出错,即丢失了数据包。当我搜索它时,我发现这个错误发生在没有找到客户端id或者我们试图连接已经连接的客户端时 我们在客户端使用android,并且 设置QOS级别:2 结论:错误 我们在服务器端所做的是,我们有一些用户是彼此的朋友,因此我们为每个用户创建客户端对象,因为他们是我们的逻辑中的朋友。通过那里的客户端id,然后连接他们,然后订阅他们,然后断开客户端。所以当用户第一次没有从客户
var client = mqtt.connect(configurationHolder.config.mqttUrl, {
clientId: from_user.toString(),
clean: false
});
client.on('connect', function () {
console.log("into connect function.....");
//Logger.log("into client client ******", subscribe_topic);
var chanelobj = {};
chanelobj[subscribe_topic] = 2;
client.subscribe(chanelobj, function (err, granted) {
if (err)
Logger.log("error while subscribing..", err);
else if (granted)
console.log("granted...", granted);
client.end();
});
// Logger.info("chanel subscribe ", subscribe_topic);
});
但有时我们会在服务器端得到丢失的数据包异常,即
"stack": [
"Error: missing packet",
" at Store.get (/home/ubuntu/node_modules/mqtt/lib/store.js:92:8)",
" at MqttClient._handlePubrel (/home/ubuntu/node_modules/mqtt/lib/client.js:858:22)",
" at MqttClient._handlePacket (/home/ubuntu/node_modules/mqtt/lib/client.js:279:12)",
" at process (/home/ubuntu/node_modules/mqtt/lib/client.js:226:12)",
" at MqttClient._handlePacket (/home/ubuntu/node_modules/mqtt/lib/client.js:283:7)",
" at process (/home/ubuntu/node_modules/mqtt/lib/client.js:226:12)",
" at Writable.writable._write (/home/ubuntu/node_modules/mqtt/lib/client.js:236:5)",
" at doWrite (/home/ubuntu/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:237:10)",
" at writeOrBuffer (/home/ubuntu/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:227:5)",
" at Writable.write (/home/ubuntu/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:194:11)",
" at write (_stream_readable.js:583:24)",
" at flow (_stream_readable.js:592:7)",
" at Socket.pipeOnReadable (_stream_readable.js:624:5)",
" at Socket.EventEmitter.emit (events.js:92:17)",
" at emitReadable_ (_stream_readable.js:408:10)",
" at emitReadable (_stream_readable.js:404:5)",
" at readableAddChunk (_stream_readable.js:165:9)",
" at Socket.Readable.push (_stream_readable.js:127:10)",
" at TCP.onread (net.js:526:21)"
],
"level": "error",
"message": "uncaughtException: missing packet"
}
以及在客户端获取错误,即:-
订阅失败连接丢失(32109)-java.io.EOFException
我无法找到客户端或服务器端的实际问题。在服务器端,断开客户端或客户端的连接存在问题。请帮我摆脱这种局面。也让我知道如何调试这个问题
谢谢你的帮助
谢谢你,我也面临同样的问题。请帮助我了解所有客户端必须具有唯一的客户端ID。您是否从同一台设备进行多个客户端连接?@hardillb感谢您的回复,我们正在为一个具有唯一ID的客户端进行单次连接,如上所述。我们首先在服务器端建立连接,并在向移动端提供服务之前关闭连接,即我们第一次从服务器端进行订阅,在移动端之后,我们仅通过唯一的idYa连接客户端一次,我也面临同样的问题。请帮助我了解所有客户端必须具有唯一的客户端ID。您是否从同一台设备进行多个客户端连接?@hardillb感谢您的回复,我们正在为一个具有唯一ID的客户端进行单次连接,如上所述。我们首先在服务器端建立连接,并在发送到移动端之前关闭连接,即我们第一次从服务器端进行订阅,在移动端之后,我们仅通过唯一id连接客户端一次