Newsgroup: it.comp.lang.javascript
Titolo: [XUL] lavorare con le socket

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.nsISocketTransportService);
        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.nsIScriptableInputStream);
        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.nsIInputStreamPump);
        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

 buonanotte...
Scusa la risposta non risolutiva, sfortunatamente ora non ho tempo di fare
test; ma spero che un minimo queste cose ti possano servire.
Facci sapere.
-- 
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio' che
non sempre lo e'" (Paul Klee)