2012-06-24 8 views
12

Di solito mettiamo solo i dati che vogliamo inviare come parametro del metodo websocket.send(), ma voglio sapere che ci sono altri parametri come IP che possiamo inserire nelle parentesi. Possiamo usarlo in questo modo:websocket.send() parametro

websocket.send(ip,data); // send data to this ip address 

Oppure dovrei chiamare altri metodi?

+4

Non si può semplicemente passare un indirizzo perché ti viene richiesto di impostare una connessione utilizzando 'websocket = new WebSocket (indirizzi)' in primo luogo. C'è solo [un argomento] (http://dev.w3.org/html5/websockets/#dom-websocket-send) per '.send'. – pimvdb

+0

Ho già configurato la connessione. allora cosa dovrei fare se voglio inviare dati ad uno specifico indirizzo IP? Quindi – Amy

+0

Se creo un server websocker, questo server può inviare dati a indirizzi IP specifici e quale metodo devo chiamare? – Amy

risposta

26

Come ho capito, si desidera che il server sia in grado di inviare messaggi dal client 1 al client 2. Non è possibile connettere direttamente due client perché una delle due estremità di una connessione WebSocket deve essere un server.

Questo è un po 'pseudocodish JavaScript:

Cliente:

var websocket = new WebSocket("server address"); 

websocket.onmessage = function(str) { 
    console.log("Someone sent: ", str); 
}; 

// Tell the server this is client 1 (swap for client 2 of course) 
websocket.send(JSON.stringify({ 
    id: "client1" 
})); 

// Tell the server we want to send something to the other client 
websocket.send(JSON.stringify({ 
    to: "client2", 
    data: "foo" 
})); 

Server:

var clients = {}; 

server.on("data", function(client, str) { 
    var obj = JSON.parse(str); 

    if("id" in obj) { 
    // New client, add it to the id/client object 
    clients[obj.id] = client; 
    } else { 
    // Send data to the client requested 
    clients[obj.to].send(obj.data); 
    } 
}); 
+0

var obj = JSON.parse (str); Questa riga restituirà un errore "non definito", sai perché? Sto usando chrome 20 beta – Amy

+1

@Amy: era pseudocodice; 'str' dovrebbe fare riferimento ai dati ricevuti dal client. Non so quale libreria stai usando quindi dovrai fare riferimento alla documentazione di esso in modo da vedere come ottenere i dati. – pimvdb

+0

Nel codice client suppongo che dovresti attendere il callback onopen prima di inviarlo. –