2015-11-02 291 views
0

我正在使用以下java代码来打开数据。但我不知道我怎么能为Node.js写同样的东西? Java代码如下所示:java到node.js代码转换

public void receiveEvent(String forTopic, MqttMessage event) 
     throws MqttException { 
    Object obj = null; 
    java.io.ByteArrayInputStream bstream = new java.io.ByteArrayInputStream(
      event.getPayload()); 
    try { 
     java.io.ObjectInputStream st = new java.io.ObjectInputStream(
       bstream); 
     obj = st.readObject(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    DataWrapper dt = (DataWrapper) obj; 
s.notifyReceived(forTopic, dt.getObject(), dt.getDevice()); 

代码数据封装如下图所示:

public class DataWrapper implements Serializable { 
private static final long serialVersionUID = 1L; 
Device device; 
Object object; 
public void setDevice(Device deviceInfo) { 
    this.device = deviceInfo; 
} 
public void setObject(Object object) { 
    this.object = object; 
} 
public Device getDevice() { 
    return device; 
} 
public Object getObject() { 
    return object; 
} 

}

回答

2

你可能要考虑MQTT.js.它可在这里NPM:https://www.npmjs.com/package/mqtt

对于一个完整的例子,我们需要知道更多一点关于你的设置和你想要做什么......但在这里是从MQTT复制的例子中,JS

var mqtt = require('mqtt'); 
var client = mqtt.connect('mqtt://test.mosquitto.org'); 

client.on('connect', function() { 
    client.subscribe('presence'); 
    client.publish('presence', 'Hello mqtt'); 
}); 

client.on('message', function (topic, message) { 
    // message is Buffer 
    console.log(message.toString()); 
    client.end(); 
}); 

它可能非常接近你想要开始。

+0

@ Julian-我知道,但我是新的node.js这就是为什么问这样的问题。我已经用java代码做了。 – abc

+0

我们将需要比示例代码更多的东西来真正帮助你..你的代码所做的唯一事情就是在你调用“notifyReceived”之前,通过3种不同类型的流来转换你接收到的事件的有效载荷,然后调用一个神秘的对象“s”。 – Julian

+0

@朱利安 - 你能请转介我的下一篇文章? http://stackoverflow.com/questions/33429380/mqtt-communication-between-node-js-and-java – abc