XPCOM Socket正在关闭。如何保持活力?

时间:2011-10-23 08:39:19

标签: sockets firefox firefox-addon xpcom firefox-addon-sdk

我目前正在开发一个firefox附加组件,它是一个使用TCP套接字连接到服务器的客户端。

在我的小测试中一切正常,客户端(ff add-on)连接到服务器(用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); 

我正在使用firefox 7,而且我正在使用firefox附加组件SDK构建附加组件。

关于如何保持套接字存活的任何想法,以获得进一步的读数?

由于

1 个答案:

答案 0 :(得分: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

XPCOM NPAPI 很快就会弃用。