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