В настоящее время я разрабатываю дополнение для 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.
Есть идеи, как сохранить сокет живым, для дальнейшего чтения?
Спасибо