我必须开发一个node.js应用程序,它可以与另一个oneM2M服务器交互。特别是node.js应用程序需要使用CoaP协议来交换数据,但我不知道如何以符合oneM2M的方式进行数据交换。
我使用以下模块启动了node.js项目:https://github.com/mcollina/node-coap,但我需要一些支持才能使用oneM2M协议创建CoaP客户端。
代码示例非常感谢。
发布于 2017-11-27 14:32:12
根据TS-0008: CoAP协议绑定在6.2.1头章中的规定,有以下oneM2M操作与CoAP方法进行映射:
Operation CoAP Method
CREATE POST
RETRIEVE GET
UPDATE PUT
DELETE DELETE
NOTIFY POST 然后在6.2.2.4定义的新选项中引入了一组新的CoAP选项,映射了oneM2M报头参数。这里,CoAP选项等效项列出了主要的header变量:
Header HTTP variable CoAP Option
X-M2M-Origin 256
X-M2M-RI 257
oneM2M-TY 267下面是一个最小的node.js脚本来执行GET操作,即用路径/<cseBase>/<AE>/<Container>检索容器资源中的最新contentInstance
var coap = require('coap');
var options = {
host : '<hostname>',
port : 5683,
pathname : "/<cseBase>/<AE>/<Container>/la",
method : 'get',
confirmable : 'true',
options : {
'Accept' : 'application/json'
}
};
var bodyString = ''; // void string for GET operation
var responseBody = '';
var req = coap.request(options);
req.setOption("256", new Buffer("<origin>")); // X-M2M-Origin (mandatory)
req.setOption("257", new Buffer('123456')); // X-M2M-RI (mandatory)
req.on('response', function (res) {
res.on('data', function () {
responseBody += res.payload.toString();
});
res.on('end', function () {
if (res.code == '2.05') {
console.log('[coap] coap ready, request OK');
var obj = JSON.parse(responseBody);
console.log('[coap] responseBody', obj);
} else {
console.log('[coap] coap res.code='+res.code);
}
});
});
req.write(bodyString);
req.end();这是一个最小的POST操作示例,即使用路径/<cseBase>/<AE>/<Container>在容器资源中创建contentInstance
var coap = require('coap');
var options = {
host : '<hostname>',
port : 5683,
pathname : "/<cseBase>/<AE>/<Container>",
method : 'post',
confirmable : 'true',
options : {
'Content-Format' : 'application/json'
}
};
var bodyString = new Buffer('{"m2m:cin":{ "con":{"temperature":33}}}');
var responseBody = '';
var req = coap.request(options);
req.setOption("256", new Buffer("<origin>")); // X-M2M-Origin (mandatory)
req.setOption("257", new Buffer('123456')); // X-M2M-RI (mandatory)
req.setOption("267", new Buffer([4])); // ty = 4, ContentInstance resource type
req.on('response', function (res) {
res.on('data', function () {
responseBody += res.payload.toString();
});
res.on('end', function () {
if (res.code == '2.05') {
console.log('[coap] coap ready, request OK');
var obj = JSON.parse(responseBody);
console.log('[coap] responseBody', obj);
} else {
console.log('[coap] coap res.code='+res.code);
}
});
});
req.write(bodyString);
req.end();发布于 2017-11-15 15:49:42
如果您想从您的应用程序中与oneM2M CSE通信,那么您应该实现Mca接口。这是CSE与您的应用程序之间的接口,技术上称为应用程序实体( AE )。
最简单的方法是使用REST绑定。您可以在http://www.onem2m.org/application-developer-guide上查看oneM2M的开发人员指南。
您还可能希望阅读以下规范:
您可以在这里找到这些和其他规范的最新版本:http://www.onem2m.org/technical/published-documents
https://stackoverflow.com/questions/47303072
复制相似问题