您的位置:首页 > 其它

Server端CoAP协议实现

2018-01-07 13:53 323 查看

1、Bad socket type specified. Valid types are: udp4, udp6

在服务器上运行简单的nodejs写的coap代码报上述错误,代码很简单,只有几行,找了很久原因,才发现又是一个版本问题,最新的node-coap跑不起来(具体原因还在研究中),因此只能安装以前版本的coap, 亲测v 0.7.2是可以实现的。具体方法:新建一个package.json文件,添加如下代码:

{
"dependencies":{
"coap": "0.7.2"
}
}


执行

sudo npm install


再执行命令运行脚本即可:

node app.js


app.js是服务器端的coap代码,实现将侦听到的URI参数返回的效果。代码如下:

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')
})


可以借助火狐浏览器的Copper插件来实现浏览器coap协议访问(需要注意的是最新版firefox不再兼容这一插件,v 55版本是可以用的,火狐默认自动更新,所以打开v55版本后,立即关闭自动更新,如果已经加入进程,则Ctrl+Shift+Delete清除缓存再重启浏览器)

当然,也可以在运行client.js来实现coap协议通信,代码如下:

const coap  = require('coap')
, req   = coap.request('coap://localhost/World')

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

req.end()


终端显示:Hello World代表通信成功。更多内容,参考:https://segmentfault.com/a/1190000002511350

2、服务器发布实现coap协议的NodeJS应用

借助pm2来实现,非常简单,先安装pm2:

npm install pm2 -g


在相应的应用程序文件夹下,执行:

npm install
pm2 stop myapp -f
pm2 start app.js -n myapp


当然,我的代码很简单,仅作测试使用,实际的项目开发中,还是要按照规范的开发流程来,在本地开发,push到github上,然后服务器端git clone再部署,为了降低每次部署的复杂度,还可以写一个用于部署服务的脚本,每次修改代码后直接执行即可。具体参考这篇文章:http://cnodejs.org/topic/53fec0d97c1e2284788983d6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  server CoAP