CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台)

 0 前言
    本文说明如果安装和使用node-coap。CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性。node-coap使用nodejs实现了coap的客户端和服务器端。
    【测试环境】——ubuntu/Linux
    【相关博文】
    【 CoAP协议学习——CoAP基础】
    【 CoAP学习笔记——CoAP资源发现】
    【 CoAP学习笔记——服务器端繁忙时的处理请求流程】
    【 树莓派学习笔记——webiopi安装与入门】webiopi中集成了CoAP Server,可以方便地通过CoAP协议控制树莓派GPIO。

1 nodejs安装
【1】下载nodejs源代码包
【2】Linux安装三部曲,依次输入以下指令:
 ./configure
make
sudo make install
【3】必要的检查
node --version

2 安装和使用node-coap
【1】新建一个工作目录
mkdir hello-coap
【2】进入该目录安装node-coap
npm install node-coap --save
    请注意windows中安装node-coap稍有差异,详见—— CoAP学习笔记——nodeJS node-coap安装和使用(windows平台)

3 简单的例子
3.1 服务器代码
const coap    = require('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')
})
    【说明】
    服务器的工程也非常简单,res.end('Hello ' + req.url.split('/')[1] + '\n')从该句程序可以看出,如果请求URL为<Server IP>/<Name>,那么服务器返回Hello <Name>
    【后台运行】
    node server.js &
    【若需要关闭服务器进程】
    # 查看 server.js的PID
    ps aux | grep server.js
    # 杀死进程
    kill <pid>

3.2 客户端测试
const coap  = require('coap') 
    , req   = coap.request('coap://localhost/xukai871105')

req.on('response', function(res) {
  res.pipe(process.stdout)
})

req.end()
    【说明】
    请求的URL为coap://localhost/xukai871105,请注意此处为URL开头为coap而不是http
    【运行】
    node client.js
    【返回】
    Hello xukai871105

3.3 浏览器测试
    浏览器测试更直观一些,需要在FireFox浏览器中安装CoAP插件。
    【1】在浏览器地址栏输入coap://localhost/xukai871105
    【2】点击工具栏中的GET
    【3】payload一栏中输出Hello xukai871105
CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台)_第1张图片
图1 浏览器测试
    
3.4 命令测试
    除了使用浏览器和客户端工具测试之外,还可以同时coap命令行测试,这种基于nodeJS的命令行工具和curl工具类似。在使用coap命令行工具之前,需要正确安装coap-cli。
    【安装】
    (sudo) npm install coap-cli -g
    【测试】
    coap get coap://localhost/xukai871105
    【返回】
    (2.05)    Hello xukai871105
    (2.05)可理解为HTTP中的200 OK。coap的更多指令请阅读参考资料【2】
    
4 参考资料
【1】 node-coap代码仓库
【2】 coap-cli coap命令行工具


你可能感兴趣的:(nodejs,CoAP)