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: 1,
        port: 6379,
        return_buffers: true, // to handle binary payloads
        //指定数据保留多长时间,单位毫秒
      ttl: {
            // TTL for subscriptions is 23 hour
            subscriptions: 23 * 60 * 60 * 1000,
       // TTL for packets is 23 hour
            packets: 23 * 60 * 60 * 1000,
          },
          host: "localhost"
    };                                       

//基本参数设置

var moscaSettings = {
        port: 1883, //设置监听端口
        backend: ascoltatore,
        maxInflightMessages: 10240, //设置单条消息的最大长度,超出后服务端会返回
      //设置WebSocket参数
      http: {
      port: 1884,
      bundle: true,
       static: ‘./‘ },
      //数据持久化参数设置
      persistence: {
            factory: mosca.persistence.Redis,
            db: 1,
            port: 6379,
            return_buffers: true, // to handle binary payloads
            ttl: {
                         // TTL for subscriptions is 23 hour
                         subscriptions: 23 * 60 * 60 * 1000,
                         // TTL for packets is 23 hour
                         packets: 23 * 60 * 60 * 1000, },
                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

原文地址:https://www.cnblogs.com/Joans/p/9957128.html

时间: 2024-10-09 14:38:30

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

Linux 内核引导参数简介

概述 内核引导参数大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数.比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明.大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(..

Dockerfile参数简介

Dockerfile参数简介:https://docs.docker.com/engine/reference/builder/ 指令                     含义解释 FROM :              FROM debian:stretch表示以debian:stretch作为基础镜像进行构建 MAINTAINER:   维护者信息RUN :                可以看出RUN后面跟的其实就是一些shell命令,通过&&将这些脚本连接在了一行执行,这么做的

[node.js] npm, mqtt, mosca

"npm install module –save" not work npm install *module* --save 没有生成 package.json 文件?需要在项目目录初始化 npm init 后使用如果已经安装了一些 module,可以使用 npm install --save mosca & mqtt.js mqtt.js 使用 websocket 协议 server https://github.com/mcollina/mosca/wiki/MQTT-o

Thrift-0.9.3 服务器端参数优化

在服务器端,如果仅仅用之前的代码,那么肯定是不行的,参数优化是必须的. 参数优化包含以下几个部分: Accept线程:    线程个数 Select Worker线程: 线程个数      每个线程的acceptedQueue有界还是无界 ExecutorService invoker的线程个数 ===============================具体代码如下: Accept线程:    线程个数,默认就是1个. tArgs.selectorThreads(Runtime.getRun

Tomcat性能调优参数简介

近期,我们的一个项目进入了试运营的阶段,在系统部署至阿里云之后,我们发现整个系统跑起来还是比较慢的,而且,由于代码的各种不规范,以及一期进度十分赶的原因,缺少文档和完整的测试,整个的上线过程一波三折.好了,不多说,切入正题,项目使用的是学校提供的阿里云,基于windows server,web容器tomcat8.0(开发的java版本是7,所以tomcat9.0不支持),通过网络上和书籍上查找的相关资料,我们对tomcat的配置做了一些改变. 首先介绍一下服务详细的环境信息: (1)Window

2.airflow参数简介

比较重要的参数: 参数 默认值 说明 airflow_home /home/airflow/airflow01 airflow home,由环境变量$AIRFLOW_HOME决定 dags_folder /home/airflow/airflow01/dags dag python文件目录 base_log_folder /home/airflow/airflow01/logs 主日志目录 executor SequentialExecutor, LocalExecutor, CeleryExe

VM参数简介

block_dump Linux 内核里提供了一个 block_dump 参数用来把 block 读写(WRITE/READ)状况转存(dump)到日志里,这样可以通过 dmesg 命令来查看. 该参数表示是否打开Block Debug模式,用于记录所有的读写及Dirty Block写回动作. 缺省设置:0,表示禁用Block Debug 将这个值设置为非零值,则在dmesg里记录各进程的block IO状况 dirty_background_bytes 当脏页所占的内存数量超过dirty_ba

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

HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8),      cellSize(8,8),nbins(9), derivAperture(1), winSigma(-1), histogramNormType(HOGDescriptor::L2Hys),L2HysThreshold(0.2), gammaCorrection(true), nlevels(HOGDescript

jqGrid中prmNames,jsonReader,colModel的参数简介

1,prmNames 前端向服务端发送的参数 jsonReader : {       root: "rows",   // json中代表实际模型数据的入口        page: "page",   // json中代表当前页码的数据        total: "total", // json中代表页码总数的数据        records: "records", // json中代表数据行总数的数据