Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js中的OneM2M coap客户端_Node.js_Coap_Onem2m - Fatal编程技术网

node.js中的OneM2M coap客户端

node.js中的OneM2M coap客户端,node.js,coap,onem2m,Node.js,Coap,Onem2m,我必须开发一个node.js应用程序,它可以与另一台oneM2M服务器交互。 特别是node.js应用程序需要使用CoaP协议交换数据,但我不知道如何以兼容oneM2M的方式进行交换 我使用以下模块启动了我的node.js项目: 但是我需要一些支持来使用oneM2M协议创建CoaP客户端 非常感谢代码示例。如果您想从应用程序与oneM2M CSE通信,那么您应该实现Mca接口。这是CSE和应用程序之间的接口,技术上称为应用程序实体或AE 最简单的方法是使用REST绑定。您可以在上查看oneM2M

我必须开发一个node.js应用程序,它可以与另一台oneM2M服务器交互。 特别是node.js应用程序需要使用CoaP协议交换数据,但我不知道如何以兼容oneM2M的方式进行交换

我使用以下模块启动了我的node.js项目: 但是我需要一些支持来使用oneM2M协议创建CoaP客户端


非常感谢代码示例。

如果您想从应用程序与oneM2M CSE通信,那么您应该实现Mca接口。这是CSE和应用程序之间的接口,技术上称为应用程序实体或AE

最简单的方法是使用REST绑定。您可以在上查看oneM2M的开发者指南

您可能还需要阅读以下规范:

  • ,这是oneM2M的核心规范文件。这里定义了基本概念以及所有资源类型
  • 有关资源的实际编码和表示的更多详细信息
您可以在此处找到这些规范和其他规范的最新版本:

根据第6.2.1章标题使用CoAP方法进行以下oneM2M操作映射:

Operation      CoAP Method
CREATE         POST
RETRIEVE       GET
UPDATE         PUT
DELETE         DELETE
NOTIFY         POST 
然后在第6.2.2.4章新期权的定义中,引入了一组新的CoAP期权,映射了一个M2M头参数。此处列出了与CoAP选项等效的主要HTTP头变量:

Header HTTP variable   CoAP Option
X-M2M-Origin           256
X-M2M-RI               257
oneM2M-TY              267
因此,这里有一个最小的node.js脚本来执行获取操作,即检索容器资源中路径为
//
的最新contentInstance:

var-coap=require('coap');
变量选项={
主机:“”,
港口:5683,
路径名:“///la”,
方法:“get”,
可证实:'真',
选项:{
“接受”:“应用程序/json”
}
};
变量bodyString='';//GET操作的无效字符串
var-responseBody='';
var req=coap.请求(选项);
请求设置选项(“256”,新缓冲区(“”);//X-M2M-Origin(强制性)
请求设置选项(“257”,新缓冲区(“123456”);//X-M2M-RI(强制性)
请求开启(“响应”,功能(res){
res.on('data',function(){
responseBody+=res.payload.toString();
});
res.on('end',function(){
如果(res.code==“2.05”){
log(“[coap]coap就绪,请求正常”);
var obj=JSON.parse(responseBody);
console.log(“[coap]responseBody”,obj);
}否则{
log('[coap]coap res.code='+res.code);
}
});
});
请求写入(正文字符串);
请求结束();
这是一个最小的POST操作示例,即在容器资源中创建一个路径为
//
的contentInstance:

var-coap=require('coap');
变量选项={
主机:“”,
港口:5683,
路径名:“//”,
方法:“post”,
可证实:'真',
选项:{
“内容格式”:“应用程序/json”
}
};
var bodyString=新缓冲区('{“m2m:cin”:{“con”:{“温度”:33}}');
var-responseBody='';
var req=coap.请求(选项);
请求设置选项(“256”,新缓冲区(“”);//X-M2M-Origin(强制性)
请求设置选项(“257”,新缓冲区(“123456”);//X-M2M-RI(强制性)
请求设置选项(“267”,新缓冲区([4]);//ty=4,ContentInstance资源类型
请求开启(“响应”,功能(res){
res.on('data',function(){
responseBody+=res.payload.toString();
});
res.on('end',function(){
如果(res.code==“2.05”){
log(“[coap]coap就绪,请求正常”);
var obj=JSON.parse(responseBody);
console.log(“[coap]responseBody”,obj);
}否则{
log('[coap]coap res.code='+res.code);
}
});
});
请求写入(正文字符串);
请求结束();

很遗憾,没有。但《开发人员指南》中的示例是一个良好的开端。您基本上需要实现RESTAPI。另一个起点可以是Eclipse om2m项目的指南:。
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();
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();