node-coap入门(三)——Observe

发布时间:2019-06-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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事件。

脚本宝典总结

以上是脚本宝典为你收集整理的node-coap入门(三)——Observe全部内容,希望文章能够帮你解决node-coap入门(三)——Observe所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: