Node.js MQTT嵌入mosca,无需任何代理

Node.js MQTT嵌入mosca,无需任何代理,node.js,mqtt,mosca,Node.js,Mqtt,Mosca,我希望以嵌入式方式使用node.js mosca MQTT代理 var mosca = require('mosca') var SECURE_KEY = __dirname + '/key.pem'; var SECURE_CERT = __dirname + '/cert.pem'; var settings = { port: 1883, logger: { name: "secureSample", level: 40, },

我希望以嵌入式方式使用node.js mosca MQTT代理

var mosca = require('mosca')

var SECURE_KEY = __dirname + '/key.pem';
var SECURE_CERT = __dirname + '/cert.pem';

var settings = {
    port: 1883,
    logger: {
        name: "secureSample",
        level: 40,
    },
    secure : {
        port: 7998,
        keyPath: SECURE_KEY,
        certPath: SECURE_CERT,
    }
};
var server = new mosca.Server(settings);
server.on('ready', setup);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);
});

// fired when a message is received
server.on('published', function(packet, client) {
    console.log('Published', packet.payload);
});

// fired when the mqtt broker is ready
function setup() {
    console.log('Mosca embedded MQTT broker running now')
}
从文档中可以看出,嵌入式mosca似乎必须使用外部代理,如MOSQUITO、AMQP、ZeroMQ、Redis。对于独立的mosca,不需要外部经纪人。嵌入式mosca是否可以运行,从而不会使用与独立mosca类似的外部代理

如果可以做到这一点,那么应该如何修改下面使用redis的代码

var mosca = require('mosca')

var ascoltatore = {
  type: 'redis',
  redis: require('redis'),
  db: 12,
  port: 6379,
  return_buffers: true, // to handle binary payloads
  host: "localhost"
};

var moscaSettings = {
  port: 1883,
  backend: ascoltatore,
  persistence: {
    factory: mosca.persistence.Redis
  }
};

var server = new mosca.Server(moscaSettings);
server.on('ready', setup);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);     
});

// fired when a message is received
server.on('published', function(packet, client) {
  console.log('Published', packet.payload);
});

// fired when the mqtt server is ready
function setup() {
  console.log('Mosca server is up and running')
}

Mosca是node.jsmqtt代理,可用于:

  • 独立的

  • 嵌入到另一个Node.js应用程序中

在可伸缩性方面,他们的文档指出

即使Mosca是一个MQTT代理,如果您需要扩展它,您也需要使用另一个代理,因为它本身没有任何集群支持。它支持的一些经纪人如下:

  • Redis,一个由@antrez创建的密钥/值存储

  • MongoDB,一种可扩展、高性能、面向文档的数据库

  • MOSQUITO和MQTT协议的所有实现

  • RabbitMQ和AMQP协议的所有实现

  • ZeroMQ以P2P方式使用Mosca


是他们的wiki

Mosca是一个node.jsmqtt代理,可以使用:

  • 独立的

  • 嵌入到另一个Node.js应用程序中

在可伸缩性方面,他们的文档指出

即使Mosca是一个MQTT代理,如果您需要扩展它,您也需要使用另一个代理,因为它本身没有任何集群支持。它支持的一些经纪人如下:

  • Redis,一个由@antrez创建的密钥/值存储

  • MongoDB,一种可扩展、高性能、面向文档的数据库

  • MOSQUITO和MQTT协议的所有实现

  • RabbitMQ和AMQP协议的所有实现

  • ZeroMQ以P2P方式使用Mosca


是他们的wiki

这里是一个安全MQTT代理的工作示例的完整源代码,该代理使用mosca以嵌入式方式运行

var mosca = require('mosca')

var SECURE_KEY = __dirname + '/key.pem';
var SECURE_CERT = __dirname + '/cert.pem';

var settings = {
    port: 1883,
    logger: {
        name: "secureSample",
        level: 40,
    },
    secure : {
        port: 7998,
        keyPath: SECURE_KEY,
        certPath: SECURE_CERT,
    }
};
var server = new mosca.Server(settings);
server.on('ready', setup);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);
});

// fired when a message is received
server.on('published', function(packet, client) {
    console.log('Published', packet.payload);
});

// fired when the mqtt broker is ready
function setup() {
    console.log('Mosca embedded MQTT broker running now')
}

下面是使用mosca以嵌入式方式运行的安全MQTT代理的工作示例的完整源代码

var mosca = require('mosca')

var SECURE_KEY = __dirname + '/key.pem';
var SECURE_CERT = __dirname + '/cert.pem';

var settings = {
    port: 1883,
    logger: {
        name: "secureSample",
        level: 40,
    },
    secure : {
        port: 7998,
        keyPath: SECURE_KEY,
        certPath: SECURE_CERT,
    }
};
var server = new mosca.Server(settings);
server.on('ready', setup);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);
});

// fired when a message is received
server.on('published', function(packet, client) {
    console.log('Published', packet.payload);
});

// fired when the mqtt broker is ready
function setup() {
    console.log('Mosca embedded MQTT broker running now')
}

这句话可以运行嵌入式mosca,这样就没有外部代理了。。没有任何意义。mosca是代理这句话可以运行嵌入式mosca,这样就没有外部代理了。。没有任何意义。mosca是代理如果您收到错误:错误:0907B068:PEM例程:PEM_READ_BIO_PRIVATEKEY:如果收到错误,则读取错误的密码:错误:0907B068:PEM例程:PEM_READ_BIO_PRIVATEKEY:读取错误的密码