0
我试图通过CoAP使用node-coap从物联网设备传输传感器数据。数据到达CoAP服务器时的顺序对我很重要。我找不到保存数据序列的方法,即使使用confirmable
请求选项。保存数据订单是否需要时可以使用CoAP?
我有一个小程序,下面显示了我的意思。
如果数据的顺序/顺序很重要,是否可以使用CoAP?如果可以,我做错了什么?
'use strict';
const coap = require('coap'),
cbor = require('cbor'),
server = coap.createServer();
const sequentialData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let incomingData = [];
let numResponses = sequentialData.length;
server.on('request', (req, res) => {
const obj = cbor.decodeFirstSync(req.payload);
incomingData.push(obj.data);
res.end();
});
server.listen(() => {
const reqOpts = {
hostname: 'localhost',
method: 'POST',
pathname: '/sequential',
options: {
Accept: 'application/cbor'
}
};
sequentialData.forEach((item) => {
const req = coap.request(reqOpts);
req.write(cbor.encode({
data: item
}));
req
.on('response', (res) => {
res.pipe(process.stdout);
res.on('end',() => {
if (--numResponses === 0) {
console.log(`got data in this order`, incomingData);
process.exit();
}
})
});
req.end();
});
});
节点方案上面会输出不同的顺序每次跑。
你的意思是TCP上的CoAP不是HTTP正确的? – rynop
是的。在我使用的实现(Californium,java)中,CoAP-over-TCP目前正在进行中。在其他实现中我不知道这一点。不幸的是,目前只有RFC草案。 –