示例调用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事件。

coap python3_node-coap入门(三)——Observe相关推荐

  1. WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)

    WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathG ...

  2. [转载]Python爬虫入门三之Urllib库的基本使用

    python爬虫系列教程http://cuiqingcai.com/1052.html 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优 ...

  3. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

  4. 文本分类入门(三)统计学习方法

    文本分类入门(三)统计学习方法 前文说到使用统计学习方法进行文本分类就是让计算机自己来观察由人提供的训练文档集,自己总结出用于判别文档类别的规则和依据.理想的结果当然是让计算机在理解文章内容的基础上进 ...

  5. .Net 3.5 Remoting编程入门三

    VS2008 .Net 3.5 Remoting编程入门三 信道 什么是信道?信道有哪些类型呢? 信道顾名思意就是通信的通道.就想那些宣传标语说的,"要想富,先修路!".同理,要学 ...

  6. sql语言和php,SQL语言快速入门(三)_php

    我们日常使用SQL语言的工作过程中,使用最多的还是从已经建立好的数据库中查询信息.下面,我们就来详细介绍一下如何使用SQL语言实现各种数据库查询操作. SELECT-FROM 为方便讲解,我们在数据库 ...

  7. MySQL入门 (三) : 运算式与函式

    运算式(expressions)已经在查询叙述中使用过,例如算数运算与「WHERE」子句中的条件判断. 虽然目前只有讨论查询资料的部份,不过你在任何地方都有可能使用运算式来完成你的工作. 一个运算式中 ...

  8. vue(vue-cli+vue-router)+babel+webpack项目搭建入门(三)

    vue(vue-cli+vue-router)+babel+webpack项目搭建入门<三> 本系列文章将介绍基于vue+webpack的前端项目的构建过程.文章分为四章内容,第一章介绍开 ...

  9. [转]周易入门三十五问答

    周易入门三十五问答 http://mt.sohu.com/20150714/n416782382.shtml 1.问:何谓<周易>? 答:<周易>是我国古代哲学.自然科学与社会 ...

  10. redis入门(三)

    文章目录 @[toc] redis入门(三) 目录 前言 事务 原理 Lua脚本 安装 脚本命令 EVAL EVALSHA lua和redis互操作 SCRIPT EXISTS SCRIPT FLUS ...

最新文章

  1. 美国公司欲联合大电脑商阻止绿坝推广
  2. 商汤作价1026亿IPO,商业化汤教授身家220亿
  3. react native TypeError network request failed
  4. 卷积神经网络中的参数计算
  5. 迷途の荣耀 Chapter Ⅱ
  6. linq 查询的结果会开辟新的内存吗?
  7. handler原子锁_Linux的原子操作与同步机制
  8. android mac转数据格式转换,mac环境下Android 反编译
  9. 【Oracle】ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
  10. HDU 2689 POJ 2299 树状数组 + 离散化
  11. HDU 5971 2016ICPC大连 A: Wrestling Match(二分图判断)
  12. License Server Version 11.9 Installation on Windows Server 2003 Hangs
  13. java软件测试方法有哪些方法有哪些方法_软件测试方法和软件测试规则
  14. Vue 子组件与父组件之间传值
  15. 使用Fiddler修改百度的Logo
  16. 米勒-拉宾素数检测法(判断一个极大的数是否为质数)——算法解析
  17. 从广告图到广告落地页
  18. linux 内功修炼之一 cpu
  19. 随心所欲b超工作站图像处理_第七讲随心所欲版医学影像工作站软件每周一题...
  20. 时序分析基本概念介绍Sequential logic

热门文章

  1. 这个阿里程序员,干了件很轴的事儿
  2. 基于MaxCompute搭建社交好友推荐系统
  3. 一款强大的 Kubernetes API 流量查看神器
  4. 跟面试官侃了半小时 MySQL 事务,把原子性、一致性、持久性的实现都讲完了
  5. 确认! Python夺冠,Java“被迫”退出竞争舞台,网友:崩溃!
  6. 腾讯Techo开发者大会揭晓云存储发展趋向:高性能、高可用、高性价比
  7. 百度现场面试:JVM+算法+Redis+数据库!(三面)| CSDN博文精选
  8. 香农编码二叉树c语言,shannon码的编码实验总结.docx
  9. TortoiseGit 下载、安装、配置_入门试炼_01
  10. SpringBoot2 集成 xxl-job任务调度中心_阻塞策略