一:服务器端

为什么使用mosca:mosca是基于node.js开发,上手难度相对较小,其次协议支持完整,除了不支持Qos 2,其它的基本都支持。持久化支持redis以及mongo。二次开发接口简单。部署非常简单,并且支持docker镜像。

mosca参数简介:

var mosca = require('mosca')

ascoltatore :  是Mosca作者开发的一个订阅与发布类库,Mosca核心的订阅与发布模型

var ascoltatore = {
type: 'redis', //指定类型,mongo的写法请参考官方wiki
redis: require('redis'),
db: ,
port: ,
return_buffers: true, // to handle binary payloads
//指定数据保留多长时间,单位毫秒
     ttl: {
// TTL for subscriptions is 23 hour
subscriptions: * * * ,
       // TTL for packets is 23 hour
packets: * * * ,
},
host: "localhost"
};

//基本参数设置

var moscaSettings = {
port: , //设置监听端口
backend: ascoltatore,
maxInflightMessages: , //设置单条消息的最大长度,超出后服务端会返回
    //设置WebSocket参数
    http: {
      port: ,
      bundle: true,
      static: './' },
      //数据持久化参数设置
      persistence: {
         factory: mosca.persistence.Redis,
         db: ,
         port: ,
         return_buffers: true, // to handle binary payloads
         ttl: {
// TTL for subscriptions is 23 hour
subscriptions: * * * ,
// TTL for packets is 23 hour
packets: * * * , },
              host: "localhost"
}
     }

//如果需要用户登录验证权限,需要改写此方法

//这里以简单判断了用户名和密码为例,真实环境可以连接实际业务系统的鉴权服务 

var authenticate = function(client, username, password, callback) {
    var authorized = (username === 'test' &;&; password.toString() === 'passwd');
    if (authorized) client.user = username;
    callback(null, authorized);
 } function authPub(client, topic, payload, callback) {
   callback(null, payload);
} function authSub(client, topic, callback) {
   callback(null, topic);
} var server = new mosca.Server(moscaSettings);
server.on('ready', setup);
server.on('clientConnected', function(client) {
    console.log('client connected', client.id);
});
server.on('published', function(packet, client) {
    console.log('Published', packet.topic + packet.payload);
}); // fired when the mqtt server is ready
function setup() {
   server.authenticate = authenticate;
   server.authorizePublish = authPub;
   server.authorizeSubscribe = authSub;
   console.log('Mosca server is up and running')
}

二次开发可以监听的事件列表

clientConnected: when a client is connected; the client is passed as a parameter.

clientDisconnecting: when a client is being disconnected; the client is passed as a parameter.

clientDisconnected: when a client is disconnected; the client is passed as a parameter.

published: when a new message is published; the packet and the client are passed as parameters.

delivered: when a client has sent back a puback for a published message; the packet and the client are passed as parameters.

subscribed: when a client is subscribed to a topic; the topic and the client are passed as parameters.

unsubscribed: when a client is unsubscribed to a topic; the topic and the client are passed as parameters.

有了上面可以监听到事件你就可以根据自己的业务进行相应的开发,拦截特定的事件并添加业务代码

ascoltatore托管地址 https://github.com/mcollina/ascoltatori

高级参数设置可以参考 https://github.com/mcollina/mosca/wiki/Mosca-advanced-usage

权限验证可以参考 https://github.com/mcollina/mosca/wiki/Authentication-&;-Authorization

配置ssl可以参考 https://github.com/mcollina/mosca/wiki/TLS-SSL-Configuration

配置WebSocket可以参考 https://github.com/mcollina/mosca/wiki/MQTT-over-Websockets

mqtt------ mosca服务器端参数简介的更多相关文章

  1. 【ABAP系列】SAP abap dialog screen屏幕参数简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP abap dialog ...

  2. Mqtt使用教程,简介

    1,简介 MQTT协议(Message Queuing Telemetry Transport),翻译过来就是遥信消息队列传输,是IBM公司于1999年提出的,现在最新版本是3.1.1.MQTT是一个 ...

  3. Tomcat性能调优参数简介

    近期,我们的一个项目进入了试运营的阶段,在系统部署至阿里云之后,我们发现整个系统跑起来还是比较慢的,而且,由于代码的各种不规范,以及一期进度十分赶的原因,缺少文档和完整的测试,整个的上线过程一波三折. ...

  4. Linux 内核引导参数简介

    概述 内核引导参数大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数.比如,如果你想知道可以向 AHA ...

  5. HOG参数简介及Hog特征维数的计算(转)

    HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8),      cellSize( ...

  6. VM参数简介

    http://www.cnblogs.com/yuzhaoxin/p/4083612.html block_dump Linux 内核里提供了一个 block_dump 参数用来把 block 读写( ...

  7. 【转载】va_list 可变参数 简介 va_copy vprintf

    [说明]本文转载自 smart 的文章 http://blog.sina.com.cn/s/blog_590be5290100qhxr.html  及百度百科 va_list是一个宏,由va_star ...

  8. vue路由对象($route)参数简介

    路由对象在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新. so , 路由对象暴露了以下属性: 1.$rout ...

  9. Flask 参数简介

    我们都知道学习了Flask的时候它里面的参数是有很多种的参数  都是需要相互进行调用传递的  今天就简要分析一些常见的参数 首先导入Flask之后看 源码 from flask import Flas ...

随机推荐

  1. python中Hadamard product和matrix product的区分

    先简单说一下Hadamard product:  (参照维基百科:https://en.wikipedia.org/wiki/Hadamard_product_(matrices)) 而matrix ...

  2. Ocelot:API网关概要

    一.概要 Ocelot是.Net Core下一个开源API网关:Ocelot主要目标是在.NET在微服务或面向服务架构中提供统一的入口服务, Ocelot拿到HttpRequest对象到管道后,先创建 ...

  3. 3D打印机如何添加自动调平功能

    原理说明 Kossel/Rostock等Delta(并联/三角洲)类型的机器,可以参考:http://learn.makerlab.me/guides/11 3d打印打印时最重要的是第一层的效果,如果 ...

  4. 最新java学习路线:含阶段性java视频教程完整版

    最新java学习路线:带阶段性java视频教程版本 第一阶段:Java基础 学习目标: 掌握基本语法.面向对象.常用类.正则.集合.Io流.多线程.Nio.网络编程.JDK新特性.函数式编程 知识点细 ...

  5. 复习-css列表和表格相关属性

    css列表和表格相关属性 list-style:设置所有列表属性 list-style-image:将图像设置为列表项标记,主要有url值 list-style-position:设置列表项标记的放置 ...

  6. 第八节 JS运动基础

    运动基础 让Div运动起来 速度——物体运动的快慢 运动中的Bug 不会停止 速度取某些值会无法停止 到达位置后再点击还会运动 重复点击速度加快 匀速运动(速度不变) 运动框架及应用: 运动框架: 在 ...

  7. autotools源文件相同/不同目录下

    关于Autotools 我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章).我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的方式来完成. 但是,我们 ...

  8. Linux curl 网络访问

    Linux curl 网络访问 参数详解 -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 -anyauth ...

  9. Dijkstra双栈算术表达式求值

    在看algs4的时候偶然发现了这个算法,又回顾了一遍当时数据结构课程里讲过的知识,当时很不在意.迟早是要还的,哎 用python实现了,比较麻烦的是我现在没有解决bash传参的问题,''(" ...

  10. Bugku-CTF之变量1

    Day9 变量1 http://123.206.87.240:8004/index1.php