mqtt------ mosca服务器端参数简介
一:服务器端
为什么使用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服务器端参数简介的更多相关文章
- 【ABAP系列】SAP abap dialog screen屏幕参数简介
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP abap dialog ...
- Mqtt使用教程,简介
1,简介 MQTT协议(Message Queuing Telemetry Transport),翻译过来就是遥信消息队列传输,是IBM公司于1999年提出的,现在最新版本是3.1.1.MQTT是一个 ...
- Tomcat性能调优参数简介
近期,我们的一个项目进入了试运营的阶段,在系统部署至阿里云之后,我们发现整个系统跑起来还是比较慢的,而且,由于代码的各种不规范,以及一期进度十分赶的原因,缺少文档和完整的测试,整个的上线过程一波三折. ...
- Linux 内核引导参数简介
概述 内核引导参数大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数.比如,如果你想知道可以向 AHA ...
- HOG参数简介及Hog特征维数的计算(转)
HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize( ...
- VM参数简介
http://www.cnblogs.com/yuzhaoxin/p/4083612.html block_dump Linux 内核里提供了一个 block_dump 参数用来把 block 读写( ...
- 【转载】va_list 可变参数 简介 va_copy vprintf
[说明]本文转载自 smart 的文章 http://blog.sina.com.cn/s/blog_590be5290100qhxr.html 及百度百科 va_list是一个宏,由va_star ...
- vue路由对象($route)参数简介
路由对象在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新. so , 路由对象暴露了以下属性: 1.$rout ...
- Flask 参数简介
我们都知道学习了Flask的时候它里面的参数是有很多种的参数 都是需要相互进行调用传递的 今天就简要分析一些常见的参数 首先导入Flask之后看 源码 from flask import Flas ...
随机推荐
- 如何在一个电脑上使用两个github账号
问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...
- ASM磁盘组剔盘、加盘实施过程
Task:从一个ASM磁盘组中剔除一块盘,加入到另一个ASM磁盘组. 环境:AIX6.1 + Oracle RAC 11.2.0.3 前期准备: 1.查看DG磁盘组空间情况: --查看DG磁盘组空间情 ...
- reactjs中使用高德地图计算两个经纬度之间的距离
第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...
- 颜色扩展类--ColorExtensions
/// <summary> /// 颜色扩展类 /// </summary> public static class ColorExtensions { /// <sum ...
- Electron把网页打包成桌面应用并进行源码加密
前言 最近想把自己用html+css+js做的网页界面打包成桌面应用,网上一搜,发现Electron是一个不错的选择,试了试,发现效果真的不错.这里记录一下打包过程以作记录,便于自己以后查看学习. 一 ...
- 软件工程---UML理解
1.依赖关系和关联关系 1.1依赖关系是调用关系,其又分为全局依赖.参数依赖.局部依赖 1.2关联关系是结构上的关系,按照关联的强弱又具体分为关联关系.聚合关系(整体和部分的组成关系.whole-pa ...
- CSS 页面布局、后台管理示例
CSS 页面布局.后台管理示例 页面布局 1.头部菜单 2.中间内容/中间左侧菜单 3.底部内容 <div class='pg-header'> <div style='width: ...
- Shell 变量、脚本参数
定义变量:可将脚本或者多个命令定义成一个变量. ()格式n(){脚本命令}. 脚本常用参数 命令:seq –w 0 23 #以01开头往上的. 命令:echo –ne #输出n换行,e扩展. 命令:b ...
- WIN10下,JAVA安装及环境变量配置(cmd可以运行java,却不能运行javac)
1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 . 第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文件夹的根 ...
- Golang实现九九乘法表
代码相对比较简单,考虑一点细节,就可以了. package main; import ( "fmt" "strconv" ); func Chengfabiao ...