firefox扩展javascript中有nsiClientSocket吗?

发布于 2024-12-11 05:41:38 字数 92 浏览 0 评论 0原文

如何从 Firefox 扩展中的 javascript 连接到端口?我可以打开端口并监听(服务器端套接字),但我想要连接到服务器的客户端套接字(在java中打开的端口)。

How to connect to a port from javascript in firefox extensions? I could able to open the port and listen (Server side socket), but I want the Client side socket which will connect to server (Port opened in java).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不爱素颜 2024-12-18 05:41:38

您使用 nsISocketTransportService.createTransport()。像这样的事情应该有效:

var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
                          .getService(Components.interfaces.nsISocketTransportService)
                          .createTransport(null, 0, host, port, null);
var stream = transport.openOutputStream(0, 0, 0);
var data = "test";
stream.write(data, data.length);
stream.close();

所有连接事件都是异步发生的,因此为了监听传输事件,您需要调用 transport.setEventSink()

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
transport.setEventSink({
  onTransportStatus: function(transport, status, progress, progressMax)
  {
    ...
  },
  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsITransportEventSync])
}, Services.tm.currentThread);

供参考:nsITransportEventSink, nsITransportEventSink 状态代码

You use nsISocketTransportService.createTransport(). Something like this should work:

var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
                          .getService(Components.interfaces.nsISocketTransportService)
                          .createTransport(null, 0, host, port, null);
var stream = transport.openOutputStream(0, 0, 0);
var data = "test";
stream.write(data, data.length);
stream.close();

All connection events happen asynchronously so in order to listen to transport events you need to call transport.setEventSink():

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
transport.setEventSink({
  onTransportStatus: function(transport, status, progress, progressMax)
  {
    ...
  },
  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsITransportEventSync])
}, Services.tm.currentThread);

For reference: nsITransportEventSink, nsITransportEventSink status codes

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文