2015-09-05 92 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在裏面。