2012年3月29日 星期四

使用 Node.js 控制網路連線管理員

Standard
既然以『國內首屈一指的 JavaScript 專家』為目標,使用 JavaScript 打造作業系統就是我們的終極目標。未來會將先前的 Flat Project(可參考舊文 Flat Project Demo - An OS for Tablets 平板作業系統Flat Project - 從山寨做起,親手打造炫麗的平板系統)以 JavaScript 重新架構,實作並提供一個更易於開發應用的環境。當然,就像過去所說,無論有多困難,產品化一直是我們的目標。

既然要開發作業系統,就要讓 JavaScript 能直接觸碰到系統層級或硬體裝置的控制,我們必須實作各種 JavaScript API 去達成這個目的,而前些日子所提及的『node-dbus』和『jsdx-toolkit』就是在做這類的工作。現在,基於 node-dbus,我們進一步和『connman(Connection Manager)』連接,實作出『jsdx-connman』,提供 JavaScript 網路管理機制的 API。這代表我們可以藉由 jsdx-connman 去控制無線、有線網路,甚至是WiMax、藍芽等各種連線介面。

如果想要嘗試 jsdx-connman,可以直接使用 NPM 安裝:
npm install jsdx-connman

這邊有個範例,讓我們可以使用 jsdx-connman API 去得知無線裝置的狀態和掃描當前環境的 Wifi 無線基地台:
var ConnMan = require('jsdx-connman');

var connman = new ConnMan();
connman.init(function() {
 if (connman.Wifi.Powered)
  console.log('Wifi is powered');
 else
  console.log('Wifi is not powered');

 if (connman.Wifi.Connected)
  console.log('Wifi is connected');
 else
  console.log('Wifi is not connected');

 console.log('Scanning Access Point...');
 connman.Wifi.Scan(function() {
  connman.Wifi.ListAPs(function(list) {
   console.log('Got ' + list.length + ' Access Point(s)');
   for (var index in list) {
    var ap = list[index];
    if (ap.Name)
     console.log('[' + ap.Name + ']');
    else
     console.log('[*hidden*]');

    console.log('Strength: ' + ap.Strength + '%');
    console.log('Security: ' + ap.Security);
    console.log('');
   }
  });
 });
});


後記

身為國內的小軟體公司,我們沒有太多的資源,也沒有太多的設備和環境。所以開發出來的東西不可能盡善盡美,更不可能在所有機器上都能運作良好。如果運作上有遭遇到任何問題,歡迎回報。:-)