XPCOM Socket закрывается. Как сохранить это в живых? - PullRequest
6 голосов
/ 23 октября 2011

В настоящее время я разрабатываю надстройку 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, и я создаю дополнение, используя SDK дополнений Firefox.

Любые идеи о том, как сохранитьРозетка жива, для дальнейших чтений?

Спасибо

1 Ответ

0 голосов
/ 07 апреля 2015

Вам нужно собрать новую реализацию с [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 скоро будут устаревшими.

...