NB-IoT模块有一个CoAP的功能,CoAP是基于UDP协议的一种带有重传机制的事务处理机制的应用层传输协议。关于CoAP的更多介绍,可以参照这个物联网学习笔记系列里面关于CoAP的文章,应该足够用了。
今天主要是在linux平台上搭建一个CoAP并进行简答的测试,主要参考博客CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台) - 物联网 IoT 经验分享小站 - CSDN博客和CoAP协议学习——CoAP基础 - 物联网 IoT 经验分享小站 - CSDN博客。
关于CoAP的官方介绍(英文版)的可以移步RFC 7252 The Constrained Application Protocol (CoAP)
以下是我认为的一些CoAP的重要特点:
通常的CoAP有node-coap和libcoap两种,这里安装的是node-coap。
查看机器类型
uname -a
返回
Linux VM_127_26_centos 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
可以看到我的是x86_64的CPU,将目录转到你想下载安装包的地方,这里直接下载已经编译好的安装包,然后下载https://nodejs.org/download/release/latest-v6.x/(当然也可以下载最新的版本v7、v8)中的对应你自己CPU的版本,并建立链接:
wget https://nodejs.org/download/release/latest-v6.x/node-v6.11.5-linux-x64.tar.gz
tar xvf node-v6.11.5-linux-x64.tar.gz
ln -s node-v6.11.5-linux-x64/bin/node /usr/local/bin/node
ln -s node-v6.11.5-linux-x64/bin/npm /usr/local/bin/npm
测试下运行:
node -v && npm -version
返回
v6.11.5
3.10.10
npm install coap --save
已经装完了,没错~简单无脑,这里来写个JS测试下服务器:
vim server.js
内容如下:
const coap = require('../') // or coap
, server = coap.createServer()
server.on('request', function(req, res) {
res.end('Hello ' + req.url.split('/')[1] + '\n')
})
server.listen(function() {
console.log('server started')
})
然后执行:
node server.js &
这样服务器就okay了,更多的应用可以去GitHub - mcollina/node-coap:CoAP - Node.js style
可以用coap客户端进行访问了,这里给出三种方法访问:Firefox浏览器的copper插件、coap-cli和js脚本。
安装了Firefox后可以去Copper(Cu)::Adds-ons for Firefox ,点Adds to Firefox就安装好了。
安装成功后浏览器地址栏输入 about::addons可以看到Copper已经安装成功了。
最后在地址栏输入 coap:://(服务器的IP地址):5683/ ,点击GET可以看到服务器返回了Hello。
coap-cli这个可以在服务器上或者linux环境下使用命令行工具coap以客户端的身份连接到服务端
安装coap-cli,并设置软链接:
npm install coap-cli -g
ln -s ln -s node-v6.11.5-linux-x64/lib/node_modules/coap-cli/index.js /usr/local/bin/coap
发送测试GET数据:
coap get coap://localhost/a166865995
返回:
(2.05) Hello a166865995
(2.05)可理解为HTTP中的200 OK。关于coap-cli的更多细节可以移步GitHub - mcollina/coap-cli: A command line interface for CoAP built on node-coap。
编辑客户端脚本:
vim client.js
内容:
const coap = require('coap')
, req = coap.request('coap://localhost/a1668659995')
req.on('response', function(res) {
res.pipe(process.stdout)
})
req.end()
执行并返回结果:
node client.js
Hello a1668659995
初入CoAP,欢迎小伙伴们一起评论区交流,一起学习~
转载请注明出处
转自:https://blog.csdn.net/a1668659995/article/details/78385427