You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constdebug=require('debug')('app');constaedes=require('aedes')();constlogging=require('aedes-logging');constserver=require('net').createServer(aedes.handle);constport=1883;// logging({// instance: aedes,// server: server// });aedes.on('clientReady',client=>{debug('client connected',client.id);});aedes.on('clientDisconnect',client=>{debug('client disconnected',client.id);});aedes.on('publish',(packet,client)=>{debug('publish',newString(packet.payload));});server.listen(port,function(){debug('server started and listening on port',port);})
MQTT官网是mqtt.org, 目前主流版本是3.1.1 (2014年), 最新版本是5.0 (2019年), 协议文档可以看mcxiaoke/mqtt,翻译的非常好。
Broker
我们称mqtt server为broker,在此之前先搞清楚broker, agent, proxy 3个概念:
以买卖房子为例, proxy只是个简单的传话筒, broker就是房产中介撮合买卖双方, agent是卖方或者买方全权委托的代理人, 有权决定卖不卖或者买不买。
MQTT首先是消息队列 (message queue), 消息队列就一定有消费者和生产者两个角色, 消息队列在这两个角色之间扮演了拉皮条的角色,所以用borker。什么是server? 一个web server更多的是单边操作,只需要处理browser发过来的请求,这就是server和broker的区别。
在系统设计时,可以将mqtt broker看作和rabbitmq, zeromq等方式处理,目前比较流行的是:
前者是C++, 后者是Erlang。
如果你需要将broker整合进node service,之前社区用的多的是mosca, 后来作者更新为aedes, 改进了性能和插件体系。
直接开个MQTTX模拟一下客户端就能测试了,非常方便。
参考:
The text was updated successfully, but these errors were encountered: