首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OneM2M coap客户机在node.js中的应用

OneM2M coap客户机在node.js中的应用
EN

Stack Overflow用户
提问于 2017-11-15 08:56:06
回答 2查看 896关注 0票数 4

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

我使用以下模块启动了node.js项目:https://github.com/mcollina/node-coap,但我需要一些支持才能使用oneM2M协议创建CoaP客户端。

代码示例非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-27 14:32:12

根据TS-0008: CoAP协议绑定6.2.1头章中的规定,有以下oneM2M操作与CoAP方法进行映射:

代码语言:javascript
复制
Operation      CoAP Method
CREATE         POST
RETRIEVE       GET
UPDATE         PUT
DELETE         DELETE
NOTIFY         POST 

然后在6.2.2.4定义的新选项中引入了一组新的CoAP选项,映射了oneM2M报头参数。这里,CoAP选项等效项列出了主要的header变量:

代码语言:javascript
复制
Header HTTP variable   CoAP Option
X-M2M-Origin           256
X-M2M-RI               257
oneM2M-TY              267

下面是一个最小的node.js脚本来执行GET操作,即用路径/<cseBase>/<AE>/<Container>检索容器资源中的最新contentInstance

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
票数 1
EN

Stack Overflow用户

发布于 2017-11-15 15:49:42

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

最简单的方法是使用REST绑定。您可以在http://www.onem2m.org/application-developer-guide上查看oneM2M的开发人员指南。

您还可能希望阅读以下规范:

  • TS-0001:功能规范是oneM2M的核心规范文件。这里,定义了基本概念以及所有资源类型。
  • 有关实际编码和资源表示的更多详细信息,请参见TS-0004:服务层核心协议
  • TS-0008: CoAP协议绑定
  • TS-0009: HTTP协议绑定

您可以在这里找到这些和其他规范的最新版本:http://www.onem2m.org/technical/published-documents

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47303072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档