簡體   English   中英

nsISocketTransportService使用Firefox插件sdk

[英]nsISocketTransportService using Firefox addon sdk

我正在嘗試使用Firefox來閱讀SSH橫幅。 即。 當您最初連接到SSH服務器時,服務器會向您發送其橫幅,標識服務器軟件,然后向您的SSH服務器發送橫幅,標識您的客戶端軟件。

為此,我在此URL使用示例:

firefox擴展javascript中有nsiClientSocket嗎?

這是我的代碼:

'use strict';

const {Cc,Ci} = require("chrome")
const prefs = require("simple-prefs");


exports.main = function(options,callbacks) {
    var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
                              .getService(Components.interfaces.nsISocketTransportService)
                              .createTransport(null, 0, "localhost", 22, null);

    //var output = transport.openOutputStream(0, 0, 0);
    var input = transport.openInputStream(0, 0, 0);
    var data = "test";
    dump(stream.read());
    //stream.write(data, data.length);
    //stream.close();
    dump("all done!");
};

當我使用cfx xpi時,我得到了這個:

The following lines from file C:\path\to\lib\main.js:
   8: var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
   9: .getService(Components.interfaces.nsISocketTransportService) use 'Components' to access chrome authority. To do so, you need to add a line somewhat like the following:

  const {Cc,Ci} = require("chrome");

Then you can use any shortcuts to its properties that you import from the 'chrome' module ('Cc', 'Ci', 'Cm', 'Cr', and 'Cu' for the 'classes', 'interfaces', 'manager', 'results', and 'utils' properties, respectively. And `components` for `Components` object itself).

所以我試着這樣做:

'use strict';

const {Cc,Ci} = require("chrome")
const prefs = require("simple-prefs");


exports.main = function(options,callbacks) {
    var transport = components.classes["@mozilla.org/network/socket-transport-service;1"]
                              .getService(interfaces.nsISocketTransportService)
                              .createTransport(null, 0, "localhost", 22, null);

    //var output = transport.openOutputStream(0, 0, 0);
    var input = transport.openInputStream(0, 0, 0);
    var data = "test";
    dump(stream.read());
    //stream.write(data, data.length);
    //stream.close();
    dump("all done!");
};

即。 我使用Components組件(小寫)和Components.interfaces只是接口。 但后來我在控制台上出現了這個錯誤:

    var transport = components.classes["@mozilla.org/network/socket-transport-service;1"]
ReferenceError: components is not defined

有任何想法嗎?

您應該使用Cc而不是Components.classesCi而不是Components.interfaces - 這些是您從chrome模塊導入的變量,它們是定義的。 如果您需要使用Components對象本身(不太可能),您也可以導入它:

const {components, Cc, Ci} = require("chrome");

供參考: chrome權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM