2012-06-24 7 views
12

Normalmente solo ponemos los datos que queremos enviar como el parámetro del método websocket.send(), pero quiero saber si hay otros parámetros como IP que podamos poner entre paréntesis. ¿Podemos usarlo de esta manera:websocket.send() parámetro

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

O debo llamar a otros métodos?

+4

No se puede pasar una dirección, porque usted está obligado a establecer una conexión usando 'websocket = new WebSocket (direcciones)' en primer lugar. Solo hay [un argumento] (http://dev.w3.org/html5/websockets/#dom-websocket-send) para '.send'. – pimvdb

+0

Ya configuré la conexión. entonces, ¿qué debo hacer si deseo enviar datos a una dirección IP específica? Entonces – Amy

+0

Si creo un websockerserver, ¿este servidor puede enviar datos a una dirección IP específica y a qué método debo llamar? – Amy

Respuesta

26

Según tengo entendido, desea que el servidor pueda enviar mensajes desde el cliente 1 al cliente 2. No puede conectar directamente dos clientes porque uno de los dos extremos de una conexión WebSocket debe ser un servidor.

Esto es un poco de JavaScript pseudocodish:

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" 
})); 

Servidor:

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); Esta línea arrojará un error "indefinido", ¿sabes por qué? Estoy usando chrome 20 beta – Amy

+1

@Amy: Fue pseudocódigo; 'str' debe hacer referencia a los datos recibidos del cliente. No sé qué biblioteca está utilizando, así que tendrá que consultar la documentación para ver cómo obtener los datos. – pimvdb

+0

En el código del cliente supongo que debe esperar la devolución de llamada abierta antes de enviar. –