【发布时间】:2015-02-10 20:53:02
【问题描述】:
恐怕我无法从 Firefox 插件打开套接字。我的目标是让我的插件在端口上监听,Python 脚本会不时向它发送一个短字符串以执行操作。
我已经检查并且没有防火墙在运行,如果我在启动这个插件之前将 netcat 设置为监听我想要的端口,它的行为会有所不同(它会打印“打开的端口!”)。不幸的是,我真的想让插件成为监听器/服务器。
//TCPSocket API: https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
//Got me started: http://stackoverflow.com/q/28326301
const {Cu,Cc,Ci} = require("chrome");
var tcpSocket = Cc["@mozilla.org/tcp-socket;1"].createInstance(Ci.nsIDOMTCPSocket);
var socket = tcpSocket.open("127.0.0.1", 64515);
socket.ondata = function (event) {
console.log('port received data!!!');
if (typeof event.data === 'string') {
console.log('Got: ' + event.data);
}
}
socket.onopen = function() {console.log('opened port!');}
socket.onerror = function(event) {
console.log('port error!');
console.log(event.data)
}
socket.onclose = function() {console.log('port closed!');}
socket.ondrain = function() {console.log('port drained!');}
现在虽然直接输出是:
console.log: my-addon: port error!
console.log: my-addon: DOMError {}
console.log: my-addon: port closed!
其中“DOMError”是 socket.onerror 收到的错误。
我不确定这是否是我对套接字缺乏了解,或者在打开端口时是否与 Firefox 插件和权限有关。
【问题讨论】:
标签: javascript sockets firefox plugins tcp