使用Node.js和Java异步获取MQTT数据

Vishwanath贾扬斯

我正在尝试开发一个发布/订阅应用程序,其中Java程序是发布者,而nodejs程序是订阅者。Java客户端连接到MQTT服务器并发送一些随机数据。NodeJS客户端应订阅Java客户端已注册的主题。我正在将数据从Java客户端获取到NodeJS控制台,但是我必须异步地在网页上打印该数据。

这是我编写的代码。

MqttPublishSample.java

public class MqttPublishSample {

    public static void main(String[] args) {

        String topic = "MQTT-Examples";
        String content = "HelloWorld";
        int qos = 2;
        int i =0;
        String broker = "tcp://localhost:1883";
        String clientId = "JavaSample";
        MemoryPersistence persistence = new MemoryPersistence();

        try {
            MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
            MqttConnectOptions connOpts = new MqttConnectOptions();
            connOpts.setCleanSession(true);
            System.out.println("Connecting to broker: " + broker);
            sampleClient.connect(connOpts);
            System.out.println("Connected");
            while(i < 100) 
            {                           
                int num = (int) (Math.random() * 2); 
                String text = content + num;
                System.out.println("Publishing message: "+content+ " "+ num); 
                MqttMessage message = new MqttMessage(text.getBytes());
                message.setQos(qos);
                sampleClient.publish(topic, message);
                System.out.println("Message published");
                i++;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            // System.out.println("Publishing message: " + content);

            /*sampleClient.disconnect();
            System.out.println("Disconnected");
            System.exit(0);*/
        } catch (MqttException me) {
            System.out.println("reason " + me.getReasonCode());
            System.out.println("msg " + me.getMessage());
            System.out.println("loc " + me.getLocalizedMessage());
            System.out.println("cause " + me.getCause());
            System.out.println("excep " + me);
            me.printStackTrace();
        }
    }
}

app.js

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  client.on('connect', function() {
        console.log("Connection Successful");
        client.subscribe('MQTT-Examples');

    });
    var content;
    client.on('message', function (topic, message) {
    content = message;
      console.log(message.toString());
    });
res.render('index', { title: content });
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

我尝试在网页上打印消息,但看不到任何消息。我需要异步在网页上打印数据。有关如何进行的任何帮助。谢谢!

弗兰克

尝试res.render('index', { title: content });在回调内移动该行client.on例如:

var express = require('express');
var app = express();

/*
 * MQTT Client
 */
var content = ""; //buffer

client.on('connect', function() {
  console.log("Connection Successful");
  client.subscribe('MQTT-Examples');
});

client.on('message', function(topic, message) {
  content += message.toString() + "<br>";
  console.log(message.toString());

});

/*
 * Express
 */
app.get('/', function(req, res) {
  res.render('index', {
    title: content
  });
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});

更新

我确实更新了代码,在新代码中,每次重新加载网页时,您将能够看到收到的所有消息。

在以前的实现中,是一种长轮询,资源将等待来自代理的消息。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 Rest api 异步获取数据并使用 node.js 将它们加载到 mongodb - 使用承诺

来自分类Dev

循环以在Node.js Sequelize中获取异步数据

来自分类Dev

如何抓取使用node.js异步加载数据的网站?

来自分类Dev

使用async.forEach和异步操作的Node.js

来自分类Dev

使用异步和等待从Room db获取数据

来自分类Dev

可观察。使用和异步流获取损坏的数据

来自分类Dev

如何实现异步任务以使用异步和等待从数据库中获取数据?

来自分类Dev

使用 react 和 node 获取 cpu 使用数据

来自分类Dev

使用mongodb和node js从Collection获取所有数据

来自分类Dev

在node.js中使用异步瀑布

来自分类Dev

在node.js中使用异步模块

来自分类Dev

在node.js中使用异步模块

来自分类Dev

安装和使用Node JS

来自分类Dev

安装和使用Node JS

来自分类Dev

连接Node.js和Cloud MQTT

来自分类Dev

使用node.js从Redis获取层次数据

来自分类Dev

使用node.js从Redis获取层次数据

来自分类Dev

使用node.js从html页面获取页面数据

来自分类Dev

无法使用Node.js从Mongodb中获取数据

来自分类Dev

如何使用Node.js获取MacBook Pro的GPS数据?

来自分类Dev

使用Node.js从Firebase上传和获取PDF

来自分类Dev

如何使用node.js发布通过mqtt从URL接收的实时流json数据

来自分类Dev

使用 MQTT 和 Node.js 无休止地发布消息

来自分类Dev

在Node.js中使用Redis和Bluebird使用异步等待

来自分类Dev

Node.js与Java之间的mqtt通信

来自分类Dev

使用node.js和angular更新数据库

来自分类Dev

Json提取和使用数据(node.js)

来自分类Dev

使用猫鼬和Express / Node Js提取数据

来自分类Dev

使用Mongoose和Node.js更新MongoDB中的数据

Related 相关文章

热门标签

归档