Javascript 使用nodejs和java异步获取MQTT数据

Javascript 使用nodejs和java异步获取MQTT数据,javascript,java,ajax,node.js,mqtt,Javascript,Java,Ajax,Node.js,Mqtt,我正在尝试开发一个发布/订阅应用程序,其中Java程序是发布者,nodejs程序是订阅者。Java客户端连接到MQTT服务器并发送一些随机数据。NodeJS客户端应该订阅java客户端注册的主题。我将数据从java客户机传送到NodeJS控制台,但我必须在网页上异步打印这些数据 这是我写的代码 MqttPublishSample.java public class MqttPublishSample { public static void main(String[] args) {

我正在尝试开发一个发布/订阅应用程序,其中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();
        }
    }
}
我尝试在网页上打印消息,但看不到任何消息。
我需要异步打印网页上的数据。任何关于如何继续的帮助。谢谢

尝试移动行
res.render('index',{title:content})
客户端的回调中。在
上,例如:

var express=require('express');
var-app=express();
/*
*MQTT客户端
*/
var-content=“”//缓冲器
client.on('connect',function()){
console.log(“连接成功”);
client.subscribe('MQTT-Examples');
});
client.on('message',函数(主题,消息){
content+=message.toString()+“
”; console.log(message.toString()); }); /* *快车 */ app.get('/',函数(req,res){ res.render('索引'{ 标题:内容 }); }); app.listen(3000,函数(){ log('示例应用程序监听端口3000!');
});
尝试移动行
res.render('index',{title:content})
客户端的回调中。在
上,例如:

var express=require('express');
var-app=express();
/*
*MQTT客户端
*/
var-content=“”//缓冲器
client.on('connect',function()){
console.log(“连接成功”);
client.subscribe('MQTT-Examples');
});
client.on('message',函数(主题,消息){
content+=message.toString()+“
”; console.log(message.toString()); }); /* *快车 */ app.get('/',函数(req,res){ res.render('索引'{ 标题:内容 }); }); app.listen(3000,函数(){ log('示例应用程序监听端口3000!');
});这一次页面将永远重新加载。它甚至不会在控制台上打印连接成功消息。不确定它是否正在运行客户机方法?这次页面将永远重新加载。它甚至不会在控制台上打印连接成功消息。不确定它是否正在运行客户端方法?
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!');
});