免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Node.js, MQTT and Websockets · Oliver Smith

Node.js, MQTT and Websockets

29 Jan 2011

For a while I've been looking at how to bridge the MQTT protocol and websockets to make it easier to build web applications using data broadcast in MQTT streams. In the past I used python and mod_pywebsocket along with mosquitto python libraries however this was cumbersome and difficult to install.  Here I present a simple solution using node.js to interact with mosquitto MQTT clients. Node.js lends itself to working well with messaging systems like MQTT and websockets due to its event driven nature. I'm also in love with node.js at the moment!

This is much simpler than previous attempts and I put the initial test together in less than ten minutes.

Prerequisites

Obviously you'll need to have node.js and mosquitto installed and also the node library node-websocket-server (which can easily be installed using npm). All my work was tested under ubuntu but there is no reason why it wouldn't work on OSX or even cygwin. To test you'll need a websocket compatible browser such as recent versions of chrome.

System Structure

mosquittopub and mosquittosub are command line MQTT clients supplied with the mosquitto MQTT broker, here mosquitto_sub will be called using node.js as child processes, events are generated on output from the process. The data is then captured and broadcast over a websocket. In this case a simple jquery page is used to display the broadcast messages but in a real application there would be more client side processing to make a useful application.

Simple Server Side Subscriber Code

This example subscribes to the topic "test" and broadcasts all messages on this topic over the websocket on port 8000.

/* Include required libraries */var util   = require('util'),sys = require('sys'),ws = require('websocket-server'),spawn = require('child_process').spawn,/* Create websocket server */server = ws.createServer({debug: true}),/** Ceate call to mosquitto_sub cli client* to subscribe on topic 'test'*/mosq = spawn('mosquitto_sub',['-t','test']);/** Bind an event to stdout which occurs when* mosquitto_sub outputs anything*/mosq.stdout.on('data', function (data) {/** Brodcast the MQTT message straight back* out on the websocket*/server.broadcast(data);/* Log the message to the console */console.log('' + data);});/** Bind an event to stderr so we can see any* errors that cause mosquitto_sub to crash*/mosq.stderr.on('data', function (data) {console.log('error: ' + data);});/* Start the websocket server listening on port 8000 */server.listen(8000);

Demonstration Client

This is a bare bones page which prints out messages received over the websocket.

<!DOCTYPE html><html><head></head><body>    <div id='debug'></div>    <div id='msg'></div><script src='http://code.jquery.com/jquery-1.4.4.min.js'></script><script>    $(document).ready(function() {            function debug(str) {                $('#debug').append('<p>'+str+'</p>');                };            ws = new WebSocket('ws://<your ip address>:8000');/* Define websocket handlers */      ws.onmessage = function(evt) {                $('#msg').append('<p>'+evt.data+'</p>');                };      ws.onclose = function() {                debug('socket closed');                };      ws.onopen = function() {                debug('connected...');            };        });</script></body></html>

Further Development

This example is of little practical use on its own however it could easily be the basis of a flashy home monitoring system. Publishing MQTT messages could be easily achieved by calling mosquitto_pub in the child process.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
websocket與node.js完美結(jié)合
MQTT協(xié)議及拓展
使用Apollo And Mosquitto 作為MQTT Server
Chrome DevTools 遠程調(diào)試協(xié)議分析及實戰(zhàn)
Introduction | Socket.IO
Node-Media-Server開源流行Nodejs流媒體服務(wù)器
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服