web-dev-qa-db-fra.com

paramètre websocket.send ()

Habituellement, nous ne mettons que les données que nous voulons envoyer en tant que paramètre de la méthode websocket.send(), mais je veux savoir s'il existe d'autres paramètres comme IP que nous pouvons mettre entre crochets. Pouvons-nous l'utiliser de cette façon:

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

Ou devrais-je appeler d'autres méthodes?

22
Amy

Si je comprends bien, vous souhaitez que le serveur puisse envoyer des messages du client 1 au client 2. Vous ne pouvez pas connecter directement deux clients car l'une des deux extrémités d'une connexion WebSocket doit être un serveur.

Voici du pseudocodage JavaScript:

Client:

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

Serveur:

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);
  }
});
42
pimvdb