如何从C#MVC调用NodeJs代码?

时间:2015-09-05 18:14:14

标签: c# node.js asp.net-mvc-4 mqtt

我在控制台中运行的nodeJs使用了mqtt代码 但是我想在c#MVC中使用这个nodeJs Mqtt代码 我怎样才能实现它?

我的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());  
});  

请提供一些在c#MVC中使用nodejs的示例代码。

2 个答案:

答案 0 :(得分:0)

我有一个解决方案,但我想澄清这个代码使用NodeJs或它是一个Native c#Code?

<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还是Not? 请让我知道。

答案 1 :(得分:0)

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

示例

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

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

P.S。您在<script>标记内的C#文件中的回答中写的是纯javascript。其中没有Node.Js