Salve a tutti. Io ho bisogno di poter mandare e ricevere stream di testo
tramite socket via javascript. Su xulplanet ho trovato qualcosa al riguardo
(nello specifico, oltre le varie pagine di reference, anche
http://xulplanet.com/tutorials/mozsdk/sockets.php ) tuttavia... non
funziona.
Il codice e' questo:
function getPageContent() {
var listener = {
finished : function(data){
dump(data);
}
}
readAllFromSocket("www.mozilla.org",80,"GET / HTTP/1.0\n\n",listener);
}
function readAllFromSocket(host,port,outputData,listener) {
try {
var transportService =
Components.classes["@mozilla.org/network/socket-transport-service;1"]
.getService(Components.interfaces.nsISocketTranspo rtService);
var transport =
transportService.createTransport(null,0,host,port, null);
var outstream = transport.openOutputStream(0,0,0);
outstream.write(outputData,outputData.length);
var stream = transport.openInputStream(0,0,0);
var instream =
Components.classes["@mozilla.org/scriptableinputstream;1"]
.createInstance(Components.interfaces.nsIScriptabl eInputStream);
instream.init(stream);
var dataListener = {
data : "",
onStartRequest: function(request, context){},
onStopRequest: function(request, context, status){
instream.close();
outstream.close();
listener.finished(this.data);
},
onDataAvailable: function(request, context, inputStream,
offset, count) {
this.data += instream.read(count);
},
};
var pump = Components.
classes["@mozilla.org/network/input-stream-pump;1"].
createInstance(Components.interfaces.nsIInputStrea mPump);
pump.init(stream, -1, -1, 0, 0, false);
pump.asyncRead(dataListener,null);
} catch (ex){
return ex;
}
return null;
}
Cioe', provo a copiare paro paro l' esempio, e faccio un bottoncino che
all'"oncommand" dovrebbe eseguire il comando, ma non succede niente. Provo
a sostituire il "dump(data)" in getPageContent (che, se ho capito bene,
dovrebbe mandare sullo STDOUT il testo?) con un alert... e niente!
Magari sono tonto io e piu' che come aprire/chiudere/leggere da/scrivere su
le socket e' che non capisco come funzioni quello streamPump...
Insomma, io vorrei poter creare l' equivalente di un netcat (o telnet, se
preferite...)
Una finestrella con 2 lineinput (per inserire indirizzo e porta) e 2
textbox, una dove incollare il testo da mandere all'indirizzo, e l' altra
dove compare quello che viene dall'indirizzo come risposta...
Scusate se il post e' un po' strano, ma mi sono fatto la nottata...
buonanotte...
--
Firma in costruzione