如何通过 Nodejs WebSocket 连接到 RouterOS?

How to connect to RouterOS via Nodejs WebSocket?

我正在学习websocket nodejs,我想像https://github.com/aluisiora/node-routeros/包一样通过websocket连接到routeros,包太宽泛了,我只想知道如何连接。

我已经阅读了官方文档https://wiki.mikrotik.com/wiki/Manual:API,但我无法理解它。

我已经尝试过这种方式,但没有得到任何回应:

client.connect(port, host, function () {
  console.log("Connected");
  client.write(encodeString("/login"));
  client.write(encodeString(`=name=${user}`));
  client.write(encodeString(`=password=${password}`));
});

client.on("data", function (data) {
  console.log("Received: " + data); // not excetue
});

我正在寻找通过 nodejs 套接字连接到 routeros 的代码示例,希望有人在这里分享。

提前致谢,非常感谢您的回答。

考虑接下来的事情:

  • RouterOS API 有自己的协议,有点复杂。 official wiki 告诉我们如何在 LOW LEVEL 与它交互。由于这些原因,很难理解。不适用于 高级 程序员。别担心,我们都经历过这里。
  • Routeros v7 有一个 REST API,这将使工作更容易,交换语言是 HTTP 协议,容易吧?实际上在beta阶段。
  • RouterOS Wiki 有其他 node.js 的包,看起来更简单:Mikronode

解决方案

安装mikronode

 $ npm install mikronode

使用它:

 var api = require('mikronode');

 var connection = new api('192.168.0.1','admin','password');
 connection.connect(function(conn) {

    var chan=conn.openChannel();

    chan.write('/ip/address/print',function() {
       chan.on('done',function(data) {

          var parsed = api.parseItems(data);

          parsed.forEach(function(item) {
             console.log('Interface/IP: '+item.interface+"/"+item.address);
          });

          chan.close();
          conn.close();

       });
    });
 });