6

私は現在、TCPソケットを使用してサーバーに接続するクライアントであるFirefoxアドオンを開発しています。

私の小さなテストでは、すべてが正常に機能し、クライアント(ffアドオン)がサーバー(Javaで設計)に接続してメッセージを送信しますが、その後、Firefoxはソケットを閉じています。

他のクライアント(JavaおよびC ++で設計されている)と接続でき、接続が閉じられないため、サーバー側のコードに問題がないことはわかっています。

問題は、Firefoxがソケットオブジェクトへの参照がなくなった後にソケットオブジェクトを破棄するため、接続が閉じられることだと思います。

とにかくここに私のコードがあります:

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

var host="192.168.1.100";
var port=9001;
var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
                          .getService(Components.interfaces.nsISocketTransportService)
                          .createTransport(null, 0, host, port, null);

var inputStream = transport.openInputStream(0, 0, 0);
var inputInterface = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
inputInterface.setInputStream(inputStream);

var outputStream = transport.openOutputStream(0, 0, 0);
var outputInterface = Components.classes["@mozilla.org/binaryoutputstream;1"].createInstance(Components.interfaces.nsIBinaryOutputStream);
outputInterface.setOutputStream(outputStream); 

var msg="some message";
outputInterface.writeUtf8Z(msg); 

私はFirefox7を使用しており、FirefoxアドオンSDKを使用してアドオンを構築しています。

さらに読むために、ソケットを存続させる方法についてのアイデアはありますか?

ありがとう

4

1 に答える 1

0

[1] WebRTCで新しい実装を構築する必要がありますか、または [2] ctypesで独自のネイティブ ライブラリを構築する必要がありますか。

[1] https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC

[2] https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes

XPCOMNPAPIはまもなく非推奨になります。

于 2015-04-07T07:04:58.460 に答える