CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言
    本文说明如何使用node-coap返回JSON数据包。CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性。node-coap使用nodejs实现了coap的客户端和服务器端。
    【测试环境】——ubuntu/Linux
    【相关博文】
    【 CoAP协议文档——The Constrained Application Protocol (CoAP)
1 服务器代码
var coap = require('coap');
var server = coap.createServer();

server.on('request',
function(req, res) {
    console.log(req.headers);

    // 请求头中必须包括application/json
    if (req.headers['Accept'] != 'application/json') {
        res.code = '4.06';
        return res.end();
    }

    res.setOption('Content-Format', 'application/json');
    res.end(JSON.stringify({
        hello: "world"
    }));
});

server.listen(function() {
    console.log('server started');
});
    【简单说明】
    【1】req.headers['Accept'] != 'application/json' 由于返回JSON数据包,请求头中最好包括Accept: application/json
    【2】res.setOption('Content-Format', 'application/json'); 设置响应头
    【3】res.end(JSON.stringify({hello: "world"})); 返回JSON数据包,数据包为固定内容{"hello":"world"}

2 客户端代码
var coap = require('coap');
var bl = require('bl');
var req = coap.request({
    pathname: '/',
    options: {
        'Accept': 'application/json'
    }
});

req.on('response',
function(res) {
    console.log('response code', res.code);

    if (res.code !== '2.05') return process.exit(1);

    res.pipe(bl(function(err, data) {
        var json = JSON.parse(data);
        console.log(json);
        process.exit(0);
    }))
});

req.end();
    【执行返回】
response code 2.05
{ hello: 'world' }
    【简要说明】
    【1】var req = coap.request({pathname: '/', options: { 'Accept': 'application/json'}}); 请求头中包括Accept: application/json。
     
3 浏览器测试
    若请求头中没有包括Accept: application/json,那么服务器返回4.06错误,相当于HTTP中的404。

图1 返回错误结果
    启动Debug模式,设置Accept选项为application/json。

图2 返回正确结果

4 wireshark抓包
4.1 使用tcpdump工具
sudo tcpdump -i lo -w ~/temp/coap-json.cap
    【简单说明】
    【1】-i参数制定网卡,lo代表回环
    【2】-w制定输出文件路径和文件名,此处保存在cap格式文件

4.2 cap文件导入wireshark中

图3 wireshark抓包
5 总结
    感觉CoAP协议还深入的不够,协议本身还是需要花些时间整理消化。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值