Сокет XPCOM закрывается. Как сохранить его живым?

В настоящее время я разрабатываю дополнение для firefox, которое представляет собой клиент, подключающийся к серверу с помощью TCP сокетов.

В моем небольшом тесте все работает нормально, клиент (дополнение 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); 

Я использую firefox 7, и я создаю дополнение, используя firefox add-ons SDK.

Есть идеи, как сохранить сокет живым, для дальнейшего чтения?

Спасибо

6
задан Wladimir Palant 24 October 2011 в 08:10
поделиться