TcpSocket listen on Firefox addon

后端 未结 1 1718
深忆病人
深忆病人 2020-12-18 12:47

I\'m trying to create a Firefox addon that uses a TcpSocket for communication. I\'ve successfully sent messages through tcp using the following code:

var tcp         


        
相关标签:
1条回答
  • 2020-12-18 13:34

    I've finally got it working with a different approach:

    var port = 3000; //whatever is your port
    const {Cc, Ci} = require("chrome");
    var serverSocket = Cc["@mozilla.org/network/server-socket;1"].createInstance(Ci.nsIServerSocket);
    serverSocket.init(port, true, -1);
    var listener = {
        onSocketAccepted: function(socket, transport) {
            var input = transport.openInputStream(Ci.nsITransport.OPEN_BLOCKING,0,0);
            var output = transport.openOutputStream(Ci.nsITransport.OPEN_BLOCKING, 0, 0);
            var tm = Cc["@mozilla.org/thread-manager;1"].getService();
            input.asyncWait({
                onInputStreamReady: function(inp) {
                    try
                    {
                        var sin = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                        sin.init(inp);
                        sin.available();
    
                        //Get request message
                        var request = '';
                        while (sin.available()) { request = request + sin.read(5120); }
                        var reqObj = { type: null, info: [] };
                        if(request != null && request.trim() != "") {
    
                            //Here is the message text
                            console.log(request);
    
                        }
                    }
                    catch(ex) { }           
                    finally
                    {
                        sin.close();
                        input.close();
                        output.close();
                    }
                }
            }, 0, 0, tm.mainThread);
        },
        onStopListening: function(socket, status) {
        }
    };
    serverSocket.asyncListen(listener);
    
    0 讨论(0)
提交回复
热议问题