如何通过 Nodejs WebSocket 连接到 RouterOS? 解决方案

问题描述

我正在学习websocket nodejs,想通过websocket连接routeros,比如https://github.com/aluisiora/node-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 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();

       });
    });
 });