NsISocketTransportService utilisant Firefox addon sdk

J'essaie d'utiliser Firefox pour lire la bannière SSH. c'est à dire. Lorsque vous vous connectez initialement à un serveur SSH, le serveur vous envoie sa bannière, identifiant le logiciel serveur et vous envoyez au serveur SSH votre bannière, identifiant votre logiciel client.

Pour ce faire, j'utilise l'exemple de cette URL:

Y a-t-il nsiClientSocket dans l'extension javascript de Firefox?

Voici mon code:

'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!"); }; 

Quand je fais cfx xpi avec ça, je comprends ceci:

 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). 

Donc, j'essaie à la place:

 '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!"); }; 

c'est à dire. Je crée les composants Composants (minuscules) et Composants. Les interfaces ne sont que des interfaces. Mais je reçois cette erreur sur la console:

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

Des idées?

Vous devez utiliser Cc au lieu de Components.classes et Ci au lieu de Components.interfaces : ce sont les variables que vous avez importées du module chrome et qu'elles sont définies. Si vous avez besoin d'utiliser l'objet Components lui-même (peu probable), vous pouvez l'importer aussi:

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

Pour référence: autorité de chrome