私はセンサー以外のリモートデバイスを持っています。それは私にいくつかの数字を与え続けます。実際に私はnode.jsサーバにこれらの番号を受け取りましたが、私はこれらのデータを公開したくありません。私はクライアントを購読したいとクライアントが購読した後トピックとメッセージを印刷したいと思います。ここに私のNode.jsサーバとmqttはでです。両方のファイルをノードapp.jsとgcc main.c。/a.outの後に実行します。
この問題を解決するにはどうすればよいですか?
ファイルは以下の通りである:クライアントを購読し、Node.js、Mosca、MQTTのMongoDBに保存する方法
はをapp.js
'use strict';
//dependencies
var express = require('express'),
passport = require('passport'),
strategy = require('passport-local').Strategy,
mongoose = require('mongoose'),
mongodb = require('mongodb'),
bodyParser = require('body-parser'),
path = require('path'),
acl = require('acl'),
mosca = require('mosca');
exports.init = function(pp) {
passport = pp;
app = pp;
return exports;
};
exports.root = function(req, res) {
// Running
res.send("Running");
};
//create express app
var app = express();
app.appname ="watersensor_DB";
//config mongoose
mongoose.Promise = global.Promise;
app.db = mongoose.createConnection('localhost/'+app.appname);
app.db.on('error', console.error.bind(console, 'mongoose connection error: '));
app.db.once('open', function() {
// Store All Data
});
//config mongodb
mongodb.connect("mongodb://localhost/"+app.appname, function(error, mdb) {
app.acl=new acl(new acl.mongodbBackend(mdb, app.appname));
});
//config data models
require('./models')(app, mongoose);
//Serve Frontend
app.use(express.static(path.join(__dirname, '/public/')));
//config Routes
var router = express.Router();
require('./routes')(app, router, passport);
//config express
app.set('secret','thisshouldnotbeinplaintext');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(router);
//config mosca
var ascoltatore = {
//using ascoltatore
type: 'mongo',
url: 'mongodb://localhost:27017/mqtt',
pubsubCollection: 'ascoltatori',
mongo: {}
};
var settings = {
port: 1883,
backend: ascoltatore,
persistence: {
factory: mosca.persistence.Mongo,
url: 'mongodb://localhost:27017/mqtt'
}
};
var server = new mosca.Server(settings);
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);
});
server.on('ready', setup);
// fired when the mqtt server is ready
function setup() {
console.log('Mosca server is up and running');
}
//Port Listening
app.listen(7000, function(){
//Running
console.log("Node.js Server Is Running On localhost:7000");
});
main.cの
#include <stdio.h>
main()
{
char buf[1024];
int i;
//mosquitto_sub -t 'test/topic' -v
//mosqui<to_pub -t 'test/topic' -m 'hello'
for(i=0; ;i++) {
//sprintf(buf, "mosquitto_pub -h 192.168.43.82 -p 1883 -t 'test' -m '%d'",i);
sprintf(buf, "mosquitto_pub -t 'test' -m '%d'",i);
printf("%s\n",buf);
system(buf);
sleep(1);
}
}
ここであなたが何を求めているのかは分かりません。また、メッセージ・トピックがあることを確認がない、あなたは信じられないほど非効率的である – hardillb