coap python3_node-coap入门(三)——Observe
示例調(diào)用v0.12.0版本的node-coap,目前只能在server端通過(guò)res.end()觸發(fā)finish事件,client端目前還沒(méi)實(shí)現(xiàn)響應(yīng)API。但火狐c(diǎn)opper插件取消訂閱時(shí),server端可以觸發(fā)finish事件。發(fā)現(xiàn)client取消訂閱API的讀者若能與我交流分享,不甚感激。
node-coap示例中observe的示例只簡(jiǎn)單介紹了observe請(qǐng)求的創(chuàng)建,本文重點(diǎn)介紹如何處理server端每次發(fā)來(lái)的observe響應(yīng)。
observe_server
const coap = require('coap')
, server = coap.createServer()
server.on('request', function(req, res) {
//判斷是否是Observe請(qǐng)求
if (req.headers['Observe'] !== 0)
return res.end(new Date().toISOString() + '\n')
//定時(shí)將日期寫(xiě)入ObserveWriteStream
var count = 0
var interval = setInterval(function() {
count++
res.write(new Date().toISOString() + '\n')
if (count === 3) {
clearInterval(interval)
//結(jié)束觀察模式
res.end()
}
}, 1000)
//結(jié)束觀察模式后觸發(fā)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
})
//統(tǒng)計(jì)觸發(fā)response事件的次數(shù)
var resp_count = 0
req.on('response', function(res) {
//輸出響應(yīng)結(jié)果
res.pipe(process.stdout)
resp_count++
console.log('觸發(fā)resp:' + resp_count)
//統(tǒng)計(jì)觸發(fā)data事件的次數(shù)
var data_count = 0
//每次收到服務(wù)器發(fā)來(lái)的observe響應(yīng)時(shí)觸發(fā)data事件
res.on('data',function(data){
data_count++
console.log('觸發(fā)data:' + data_count + '\n-------\n')
//data事件次數(shù)達(dá)到3時(shí)關(guān)閉監(jiān)聽(tīng)
if(data_count === 3)
res.close()
})
})
req.end()
啟動(dòng)server
$ node observe_server
server start
啟動(dòng)client
$ node observe_client
觸發(fā)resp:1
2015-10-17T05:26:53.773Z
觸發(fā)data:1
-------
2015-10-17T05:26:54.787Z
觸發(fā)data:2
-------
2015-10-17T05:26:55.797Z
觸發(fā)data:3
-------
此時(shí),啟動(dòng)server的終端:
$ node observe_server
server started
finsh
從命令行的輸出我們可以知道,client進(jìn)入observe模式時(shí),只有第一次觸發(fā)response事件,每次都觸發(fā)data事件。
總結(jié)
以上是生活随笔為你收集整理的coap python3_node-coap入门(三)——Observe的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: memcached的java客户端_Me
- 下一篇: java local_java.time