2017-01-17 3 views
0

Ich versuche derzeit, den Server und den Client zwischen zwei verschiedenen Computern auszuführen. Der Server funktioniert jedoch gut, aber nicht der Client. Ich habe versucht, Sudo UFW Port 4334 zu verwenden, aber ohne Erfolg. Kann mir jemand helfen?Ubuntu Port wird nicht auf den Client hören, sondern wird auf Server

/*global require,console,setTimeout */ 
    var opcua = require("node-opcua"); 
    var async = require("async"); 
    var fs = require("fs"); 
    var csv = require("fast-csv"); 
    var sleep = require("system-sleep"); 

    var client = new opcua.OPCUAClient(); 
    var endpointUrl = "opc.tcp://" + require("os").hostname() + ":4334/UA/MyLittleServer"; 


    var the_session, the_subscription; 

    async.series([ 

     // step 1 : connect to 
     function(callback) { 
      client.connect(endpointUrl,function (err) { 
       if(err) { 
        console.log(" cannot connect to endpoint :" , endpointUrl); 
       } else { 
        console.log("connected !"); 
      console.log("Endpoint URL ", endpointUrl); 
       } 
       callback(err); 
      }); 
     }, 

     // step 2 : createSession 
     function(callback) { 
      client.createSession(function(err,session) { 
       if(!err) { 
        the_session = session; 
       } 
       callback(err); 
      }); 
     }, 

     // step 3 : browse 
     function(callback) { 
      the_session.browse("RootFolder", function(err,browse_result){ 
       if(!err) { 
        browse_result[0].references.forEach(function(reference) { 
         console.log(reference.browseName.toString()); 
        }); 
       } 
       callback(err); 
      }); 
     }, 

     // step 4 : read a variable with readVariableValue 
     //function(callback) { 
     // the_session.readVariableValue("ns=2000;s=TEST", function(err,dataValue) { 
     //  if (!err) { 
     //   console.log(" free mem % = " , dataValue.toString()); 
     //  } 
     //  callback(err); 
     // }); 
     //}, 

     // step 4' : read a variable with read 
     //function(callback) { 
     // var max_age = 0; 
     // var nodes_to_read = [ 
     //  { nodeId: "ns=2000;s=TEST", attributeId: opcua.AttributeIds.Value } 
     // ]; 
     // the_session.read(nodes_to_read, max_age, function(err,nodes_to_read,dataValues) { 
     //  if (!err) { 
     //   console.log(" free mem % = " , dataValues[0]); 
     //  } 
     //  callback(err); 
     // }); 
     //}, 


    // function(callback){ 
    //  the_session.readVariableValue("ns=74;s=Dou", function(err,dataValue) { 
    //   if(!err){ 
    //    console.log("Test Success", dataValue.toString()); 
    //   } 
    //   callback(err); 
    //   }); 
    //  }, 
    // 
    // function(callback){ 
    //  the_session.readVariableValue("ns=74;s=Float", function(err,dataValue) { 
    //   if(!err){ 
    //    console.log("Test Success", dataValue.toString()); 
    //   } 
    //   callback(err); 
    //   }); 
    //  }, 
    // 
    // function(callback){ 
    //  the_session.readVariableValue("ns=74;s=String", function(err,dataValue) { 
    //   if(!err){ 
    //    console.log("Test Success", dataValue.toString()); 
    //   } 
    //   callback(err); 
    //   }); 
    //  }, 

    // function(callback){ 
    //  the_session.readVariableValue("ns=1;s=CSV", function(err, dataValue) { 
    //   if(!err){ 
    //    console.log(dataValue.toString()); 
    //    sleep(5000); 
    //   } 
    //   callback(err); 
    //   }); 
    //  }, 

    // function(callback){ 
    //  the_session.readVariableValue("ns=1;s=CSV", function(err, dataValue) { 
    //   if(!err){ 
    //    fs.createReadStream(dataValue.toString()) 
    //    console.log(dataValue.toString()); 
    //    sleep(5000); 
    //     .pipe(csv()) 
    //     .on('data', function(data){ 
    //     console.log(csv); 
    //     sleep(5000); 
    //     }) 
    //     .op('end', function(data){ 
    //     console.log("Read Finish") 
    //     }); 
    //   } 
    //   callback(err); 
    //  }); 
    // }, 





     // step 5: install a subscription and install a monitored item for 10 seconds 
     function(callback) { 

      the_subscription=new opcua.ClientSubscription(the_session,{ 
       requestedPublishingInterval: 1000, 
       requestedLifetimeCount: 10, 
       requestedMaxKeepAliveCount: 2, 
       maxNotificationsPerPublish: 10, 
       publishingEnabled: true, 
       priority: 10 
      }); 

      the_subscription.on("started",function(){ 
       console.log("subscription started for 2 seconds - subscriptionId=",the_subscription.subscriptionId); 
      }).on("keepalive",function(){ 
       console.log("keepalive"); 
      }).on("terminated",function(){ 
       callback(); 
      }); 

      setTimeout(function(){ 
       the_subscription.terminate(); 
      },10000000); 

      // install monitored item 
     var monitoredItem = the_subscription.monitor({ 
       nodeId: opcua.resolveNodeId("ns=2000;s=TEST"), 
       attributeId: opcua.AttributeIds.Value 
      }, 
      { 
       samplingInterval: 100, 
       discardOldest: true, 
       queueSize: 10 
      }, 
      opcua.read_service.TimestampsToReturn.Both 
      ); 
      console.log("-------------------------------------"); 

     monitoredItem.on("changed",function(dataValue){ 
       console.log(" New Data Receive = ",dataValue.value.value); 
      }); 
     }, 

     // close session 
     function(callback) { 
      the_session.close(function(err){ 
       if(err) { 
        console.log("session closed failed ?"); 
       } 
       callback(); 
      }); 
     } 

    ], 
    function(err) { 
     if (err) { 
      console.log(" failure ",err); 
     } else { 
      console.log("done!"); 
     } 
     client.disconnect(function(){}); 
    }) ; 
+0

Angenommen, dies funktioniert, wenn sowohl der Client als auch der Server sich auf demselben Host befinden (also die Client-URL localhost), dann muss es ein Gen sein ric Netzwerkproblem. Dinge zu beachten: Der Server hört nur auf der Loopback-Schnittstelle; Server-Firewall blockiert eingehende Verbindungen zu Port 4334; Client-Firewall blockiert ausgehende Verbindungen. Es würde auch helfen, den genauen Fehler zu veröffentlichen, den der Klient erhält. – vagelis

Antwort

0

Wahrscheinlich müssen Sie die Endpunkt-URL so bearbeiten, dass sie auf den richtigen Rechner zeigt.

In Ihrem Beispiel versucht der Client, einen Server zu adressieren, der auf demselben Computer ausgeführt wird.

Sie müssen angeben:

var endpointUrl = "opc.tcp://" + require("os").hostname() + ":4334/UA/MyLittleServer"; 

Ihr opcua Server Unter der Annahme, auf Port 4334 auf einer Maschine mit dem Namen ServerMachine mit IP 192.1.2.3 läuft

var endpointUrl = "opc.tcp://ServerMachine:4334/UA/MyLittleServer"; 

oder

var endpointUrl = "opc.tcp://192.1.2.3:4334/UA/MyLittleServer"; 
Verwandte Themen