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事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么把程序内部坐标转为屏幕坐标_经纬度坐标转换成屏幕坐标

地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标。向左、向下的规则。 屏幕坐标定义规则:X轴向右递增,Y轴向下递增。可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y…

kmeans python_k-means python实践

#codingutf-8import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansimport sklearn.datasets as dsimport matplotlibmatplotlib.rcParams[font.sans-serif] [uSimHei]matplotlib.rcParams[axes.unicode_minus] False#生成测试数据#生成维度…

mysql max 命令大全_MySQL常用命令,34道练习题(持续更新中)。

1、使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3、选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4、查…

python深度优先_python数据结构之图深度优先和广度优先实例详解

本文实例讲述了python数据结构之图深度优先和广度优先用法。分享给大家供大家参考。具体如下:首先有一个概念:回溯回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先…

mysql sum id 5_mysql怎么使用sum()求id字段的和?

mysql使用sum()求id字段的和的方法:利用“SELECT SUM(id) FROM 数据表名;”来求id字段的和,返回id字段值的总和;SUM()函数在计算时,忽略列值为NULL的行。(推荐教程:mysql视频教程)SUM() 函数返回数值列的总数。SQL SUM…

python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...

【设计师的材料清单】戳图即可购买《设计师的材料清单》实体书或获取高清电子书转载整理自:弗思特(ID:FFTCCL)各位设计师大家好!随着人们对建筑外观及内部环境要求的不断提高具有大面积采光且轻盈的玻璃屋面系统在大型公共建筑设计中被广泛使…

mysql如何建外建_mysql如何建立外键

mysql如何建立外键一个主表blog博客表,DROP TABLE IF EXISTS blog;CREATE TABLE blog (id int(11) NOT NULL auto_increment,title varchar(11) default NULL,content varchar(11) default NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETgb2312;另一个表comment,评论表…

二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会

前记上周我投递出了简历,岗位是后端开发工程师。这周腾讯面试官给我进行了视频面试。面试过程中他问了二叉树的问题。二叉树相关算法题,在面试中出现的次数非常非常多,所以我面试之前也有所准备。今天结合面试问题详细讲一讲二叉树&#xff0…

python教程程序_Python如何发布程序的详细教程

如何发布一个Python程序:1.安装一个pyInstaller在pycharm里点 file —–>setting—–>Project workspace——>Interpreter——>点pip右边的+号,进入下面这个界面:搜索pyInstaller, 点击左下方Iinstall package安装(出…

创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)

本篇文章主要给大家介绍mysql数据库怎么创建外键。关于mysql数据库外键的基础介绍,我们在这篇文章【Mysql外键是什么?有哪些用处?】中,已经给大家介绍过了,需要的朋友可以选择参考。了解了外键的基础定义,那…

redis 管理工具_Redis桌面管理工具Redis Desktop Manager 2019.2发布

简介Redis桌面管理器(又名RDM) - 是适用于Windows,Linux和MacOS的快速开源Redis数据库管理应用程序。该工具为您提供了一个易于使用的GUI,可以访问您的Redis数据库并执行一些基本操作:将键视为树,CRUD键,通过shell执行…

如何保护python代码_如何在发布之前保护我的Python代码?

由于Python是一种按设计进行解释的语言,而且它将代码编译为字节码(这无助于隐藏它,因为字节码更容易反转),因此没有真正安全的方法来隐藏源代码,因为它是不可恢复的,任何编程语言都是如此。在一开始,如果你…

python pandas教程百家号_Pandas 常见的基本方法

说明:文章所有内容均截选自实验楼教程【Pandas 使用教程】,想要查看教程完整内容,点击教程即可~前言:Pandas 是非常著名的开源数据处理工具,我们可以通过它对数据集进行快速读取、转换、过滤、分析等一系列操作。除此之…

python查看系统句柄数量_linux下查看系统进程占用的句柄数方法

---查看系统默认的最大文件句柄数,系统默认是1024# ulimit -n1024----查看当前进程打开了多少句柄数# lsof -n|awk {print $2}|sort|uniq -c|sort -nr|more131 2420457 2424457 24231   ........其中第一列是打开的句柄数,第二列是进程ID。可以根据ID号…

java静态变量实例变量_java中静态变量和实例变量的区别

实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用静态变量:不需要创建实例对象就可以直接使用类名进行引用public class Different {public static int staticInt 0;//静态变量public int insInt 0;//实例变量public Different…

sql in里面可以放多少参数_如何从文本文件读入 SQL 参数

有时我们希望把参数列表分行存储在文本文件里,执行SQL时再拼到in函数里,从而查询出符合条件的记录。但SQL不能解析文本文件,直接拼到in函数里有困难,所以很多人先把文件导入数据库临时表,再用join语句做关联&#xff0…

java sca视频教程_如何进入Java SCA软件的开发

该文档是SCA Java项目的开发者指南l一般性指南l获取源代码l配置你的开发环境l构建二进制和源代码发布包l导入SCA模块到你的开发IDE环境中l理解SCA代码路径l编码指南l测试lMaven构建结构l报告遇到的问题和提供补丁l开发提示为Webapp样例代码生成Eclipse WTP Web工程为样例中的程…

谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...

上月底谷歌浏览器推送紧急安全更新对浏览器漏洞进行修复,当时谷歌浏览器博客并未公布漏洞的具体细节信息。蓝点网当时也在文章中称通常这种不公布漏洞的更新,都是比较严重的问题因此只有等多数用户修复后才会公开。现在多数能够自动更新的用户已经升级到…

java js webservice_java Web技术探路:js Ajax调用WebService

StuList new List();for (int i 0; i < 10; i){Student s new Student();s.Sid i 1;s.Name "Tom"s.Sid;s.Sex "男";s.Age i 1;StuList.Add(s);}return StuList;}}}注意&#xff1a;我们分别看一下这几个方法的签名&#xff0c;这很重要&#x…

python下载晚上excel_Python自动操控excel,一小时解决你一天的工作

过去&#xff0c;在很多金融、市场、行政的招聘中&#xff0c;面试官都会问一句&#xff1a;“你精通 EXCEL 吗&#xff1f;”但今天&#xff0c;他们可能更喜欢问&#xff1a;“你会 Python 吗&#xff1f;”越来越多的企业开始用 Python 处理数据&#xff0c;特别是金融、证券…