2015-09-05 40 views
-2

我使用mqtt代码和在控制台中运行的nodeJs。
但我想在c#MVC中使用这个nodeJs Mqtt代码。
我该如何实现它?如何从C#MVC调用NodeJs代码?

我的NodeJS代码如下,

Server.js

var mqtt = require('mqtt');  
var sys = require("sys"); 
var stdin = process.openStdin(); 
var client = mqtt.connect('http://broker.mqttdashboard.com'); 

client.on('connect', function() { 
    console.log("Chat Application"); 

    stdin.addListener("data", function(d) { 
     client.publish('presence',d.toString()); 
    }); 

    client.subscribe('msg'); 

    client.on('message', function (topic, message) { 
     console.log('User2:',message.toString()); 
    }); 
}); 

Client.js

var mqtt = require('mqtt'); 
var client = mqtt.connect('http://broker.mqttdashboard.com'); 
var sys = require("sys"); 
var stdin = process.openStdin(); 

client.on('connect', function() { 
    console.log("Chat Application"); 
    client.subscribe('presence'); 
}); 

client.on('message', function (topic, message) { 
    console.log('User1:',message.toString()); 
}); 

stdin.addListener("data", function(d) { 
    client.publish('msg',d.toString()); 
}); 

请给索姆e在c#MVC中使用nodejs的示例代码。

+0

你真的想从C#调用nodejs代码吗?或者你真的想从某些C#代码发送/接收MQTT消息吗? – hardillb

+0

是的。完全一样... –

+0

我想用c#代码中的nodeJs发送/接收mqtt消息。 –

回答

0

我得到了一个解决方案,但我想澄清一点,这段代码使用NodeJs或它是一个本机c#代码?

<script> 
     var client = new Messaging.Client("broker.mqttdashboard.com", 8000, "myclientid_" + parseInt(Math.random() * 100, 10)); 
     client.onConnectionLost = function (responseObject) { 
      alert("connection lost: " + responseObject.errorMessage); 
     }; 
     client.onMessageArrived = function (message) { 
      $('ol').append('<li> ' + $("#TUserName").val() + ' : ' + message.payloadString + '</li><br/>'); 
     }; 
     var options = { 
      timeout: 3, 
      onSuccess: function() { 
      client.subscribe("MQTT/Message", { qos: 2 }); 
      alert("Connected"); 
      }, 
      onFailure: function (message) { 
       alert("Connection failed: " + message.errorMessage); 
      } 
     }; 
     var publish = function (payload, topic, qos, retained) { 
      var message = new Messaging.Message(payload); 
      message.destinationName = topic; 
      message.qos = qos; 
      message.retained = retained; 
      client.send(message); 
     } 


     $(document).ready(function() { 
      client.connect(options); 
      $("#btn").click(function() { 
        publish($('#test').val(),"MQTT/Message", 2, true);                          
        $("ol").append("<li> You : " + $("#test").val() + "</li>"); 
      }); 

</Script> 

它的效果很好。 但我想知道这段代码是否使用NodeJs? 请让我知道。

+0

这是javascript,并从脚本标记和jQuery语法我会说,没有nodejs – Icepickle

0

您从不直接在客户端应用程序中使用node。但是,可以通过向您的node应用程序中指定的连接端点发出AJAXXHR请求来访问功能。

要访问数据库MongoDbjavascript的应用程序,你在你的节点应用进一步调用回调函数指定某些URL或端点。这些回调函数包含用于连接到mongo数据库的代码。

从客户端,您可以向指定网址发送AJAX请求以及所需的数据。回调然后执行CRUD操作并返回相应的结果。

P.S.你在<script>标签内的C#文件中的答案中写的是纯粹的javascript。没有什么像Node.Js在里面。