Part of this code is taken from internet
//socketServer.js:
//---------------------
function ServerSock()
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        this.serverSocket = Components.classes["@mozilla.org/network/
server-socket;1"].createInstance
(Components.interfaces.nsIServerSocket);
}

ServerSock.prototype.start = function(port)
{
        var listenOn = port || 9001;
        try {
                this.serverSocket.init(listenOn, true, -1);
                this.serverSocket.asyncListen(this);
        }
        catch (ex) {
                /* alert( ex ); */
        }
        /* alert( "Listening" ); */
};

ServerSock.prototype.stop = function()
{
        try {
                this.serverSocket.close();
                delete this.serverSocket;
        }
        catch (ex) {
                /* alert( ex ); */
        }
};

ServerSock.prototype.onSocketAccepted = function(socket, transport)
{
        try {
                netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        }
        catch (ex) {
                alert(ex);
        }
        try {
                alert( "Accepting connection from port
"+transport.port );
                this._outstream = transport.openOutputStream(0, 0, 0);
                this._stream = transport.openInputStream(0, 0, 0);
                this._instream = Components.classes["@mozilla.org/
scriptableinputstream;1"].createInstance
(Components.interfaces.nsIScriptableInputStream);
                this._instream.init(this._stream);

                var socketListener = new ServerSockListener(transport,
this._instream, this);
                var pump = Components.classes["@mozilla.org/network/
input-stream-pump;1"].createInstance
(Components.interfaces.nsIInputStreamPump);
                pump.init(this._stream, -1, -1, 0, 0, false);
                pump.asyncRead(socketListener, null);
        } catch(ex2) {
                alert( ex2 );
        }
};


ServerSock.prototype.close = function()
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        this._instream.close();
};

ServerSock.prototype.onStopListening = function(socket, status)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        alert( "Shutting down server" );
        this._stream.close();
        this._socketClosed = true;
};

ServerSock.prototype.respond = function(response)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        var output = response + "\n";
        this._outstream.write(output, output.length);
        this._outstream.flush();
};

function ServerSockListener(transport, inputStream, driver)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        this.transport = transport;
        this.inputStream = inputStream;
        this.driver = driver;
        this.data = "";
        this.command = "";
}

ServerSockListener.prototype.onStartRequest = function(request,
context)
{
}

ServerSockListener.prototype.onStopRequest = function(request,
context, status)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        if (this.transport.isAlive()) this.transport.close(0);
}

ServerSockListener.prototype.onDataAvailable = function(request,
context, inputStream, offset, count)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        var incoming = this.inputStream.read(count).replace(/^[\s]+/
g,'').replace(/[\s]+$/g,'');

        /* Split the command and data part */
        var parts = incoming.split(' ');
        this.command = parts.shift();
        this.url = parts;

        if (this.command == 'quit') {
                this.transport.close();
        }
        else if (this.command == 'refresh') {
                window.parent.location="http://localhost/121player/
121term_main.php";
                /* window.location = this.url; */
                this.driver.respond("Firefox: Refreshing...");
                alert( "Shutting down server" );
                stop();
                /* this._stream.close(); */
                /* this._socketClosed = true; */
        }
        else {
                //window.location = "../121player/121term_main.php";
                /* alert( "Received: "+this.command ); */
                this.driver.respond("Firefox: Thanks");
                //this.executeCommand();
                //this.transport.close();
        }
}

/*
 * For now we don't need this. But we will need this for future
enhancements
 */
ServerSockListener.prototype.executeCommand = function()
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        if (this.driver['cmd_'+this.command]) {
                try {
                        this.driver['cmd_'+this.command](this.data);
                } catch (e) {
                        this.driver.respond("ERROR ["+this.command
+"] : "+e);
                }
        } else {
                this.driver.respond("ERROR ["+this.command+"] :
Unknown command");
        }
        this.command = "";
        this.data = "";
}
// Ending here
//  <?include_once("serverSock.js");?>

function MyServer()
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        ServerSock.apply(this);
};
// extend ServerSock object
MyServer.prototype = new ServerSock;

MyServer.prototype.cmd_commandA = function(params)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        var x = params[0];
        var y = params[1];
        // .. do something here ..
        this.respond('OK');
};

MyServer.prototype.cmd_commandB = function(params)
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        var z = params[0];
        // .. do something here ..
        this.respond('OK');
}

// to stop server :
function stop()
{
        MyServerObj.stop();
}

function testStart()
{
        netscape.security.PrivilegeManager.enablePrivilege
('UniversalXPConnect');
        var MyServerObj = new MyServer();
        // start server and make it listen to local connection on port
listeningPort
        MyServerObj.start(9001);
}
// JS END-------------------


<body onload="socketServer.js>
_______________________________________________
dev-tech-network mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-network

Reply via email to