4
恐怕我無法從Firefox插件打開套接字。我的目標是讓我的插件在端口上進行偵聽,並且Python腳本會稍後發送一個簡短的字符串來執行操作。從Firefox插件打開TCP套接字
我已經確認並沒有防火牆正在運行,如果我設置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插件和權限有關的特殊功能。
太謝謝你了 - 這是完美的!我也很高興你爲你自己的目的找到了這個解決方案:) – JKuin 2015-02-10 21:16:40
我道歉我不能給解決方案一個贊成 - 我的帳戶太新了,看起來像 - 但我確實接受它作爲一個正確的答案。再次謝謝你! – JKuin 2015-02-10 21:17:14
@JKuin - 沒問題,我希望你能達到你想要的...... – LcSalazar 2015-02-11 14:50:05