首页 > 代码库 > CoAP学习笔记——nodeJS node-coap返回JSON数据包
CoAP学习笔记——nodeJS node-coap返回JSON数据包
0 前言
本文说明如何使用node-coap返回JSON数据包。CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性。node-coap使用nodejs实现了coap的客户端和服务器端。
【测试环境】——ubuntu/Linux
【相关博文】
【CoAP协议学习——CoAP基础】
【CoAP学习笔记——CoAP资源发现】
【CoAP学习笔记——服务器端繁忙时的处理请求流程】
【CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台)】
【CoAP学习笔记——nodeJS node-coap安装和使用(windows平台)】
【树莓派学习笔记——webiopi安装与入门】webiopi中集成了CoAP Server,可以方便地通过CoAP协议控制树莓派GPIO。
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‘ }
{ 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协议还深入的不够,协议本身还是需要花些时间整理消化。
CoAP学习笔记——nodeJS node-coap返回JSON数据包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。