coap python3_node-coap入门(三)——Observe

示例调用v0.12.0版本的node-coap,目前只能在server端通过res.end()触发finish事件,client端目前还没实现响应API。但火狐copper插件取消订阅时,server端可以触发finish事件。发现client取消订阅API的读者若能与我交流分享,不甚感激。

node-coap示例中observe的示例只简单介绍了observe请求的创建,本文重点介绍如何处理server端每次发来的observe响应。

observe_server

const coap = require('coap')

, server = coap.createServer()

server.on('request', function(req, res) {

//判断是否是Observe请求

if (req.headers['Observe'] !== 0)

return res.end(new Date().toISOString() + '\n')

//定时将日期写入ObserveWriteStream

var count = 0

var interval = setInterval(function() {

count++

res.write(new Date().toISOString() + '\n')

if (count === 3) {

clearInterval(interval)

//结束观察模式

res.end()

}

}, 1000)

//结束观察模式后触发finish事件

res.on('finish', function(err) {

console.log('finsh')

})

})

server.listen(function() {

console.log('server started')

})

observe_client

var coap = require('coap')

, req = coap.request({

observe: true

})

//统计触发response事件的次数

var resp_count = 0

req.on('response', function(res) {

//输出响应结果

res.pipe(process.stdout)

resp_count++

console.log('触发resp:' + resp_count)

//统计触发data事件的次数

var data_count = 0

//每次收到服务器发来的observe响应时触发data事件

res.on('data',function(data){

data_count++

console.log('触发data:' + data_count + '\n-------\n')

//data事件次数达到3时关闭监听

if(data_count === 3)

res.close()

})

})

req.end()

启动server

$ node observe_server

server start

启动client

$ node observe_client

触发resp:1

2015-10-17T05:26:53.773Z

触发data:1

-------

2015-10-17T05:26:54.787Z

触发data:2

-------

2015-10-17T05:26:55.797Z

触发data:3

-------

此时,启动server的终端:

$ node observe_server

server started

finsh

从命令行的输出我们可以知道,client进入observe模式时,只有第一次触发response事件,每次都触发data事件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值