【问题标题】:websocket.send() parameterwebsocket.send() 参数
【发布时间】:2012-06-26 06:00:51
【问题描述】:

通常我们只把我们要发送的数据作为websocket.send()方法的参数,但是我想知道是否还有其他参数比如IP可以放在括号内。我们可以这样使用吗:

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

或者我应该调用其他方法?

【问题讨论】:

  • 您不能只传递地址,因为您首先需要使用websocket = new WebSocket(addresss) 建立连接。 .send 只有one argument
  • 我已经建立了连接。那么如果我想将数据发送到特定的IP地址该怎么办?那么
  • 如果我创建一个websockerserver,这个服务器可以发送数据到特定的ip地址吗,我应该调用什么方法?
  • 在两个 IP 地址之间建立了连接。如果要将数据发送到特定 IP 地址,请先建立与该地址的连接。服务器不建立连接,只建立客户端,但如果你有很多连接打开,服务器可以选择它要发送的东西。
  • 连接已经绑定到一个特定的地址,你应该把它传递给WebSocket构造函数。 “服务器将数据发送到特定的 IP 地址”是什么意思?服务器可以将数据发送到与其连接的套接字之一——您可能不需要在服务器端编写特定地址。

标签: javascript websocket send


【解决方案1】:

据我了解,您希望服务器能够通过客户端 1 向客户端 2 发送消息。您不能直接连接两个客户端,因为 WebSocket 连接的两端之一需要是服务器。

这是一些伪代码 JavaScript:

客户:

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

服务器:

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

【讨论】:

  • var obj = JSON.parse(str);这一行会返回一个“未定义”的错误,你知道为什么吗?我正在使用 chrome 20 测试版
  • @Amy:这是伪代码; str 应该是指从客户端收到的数据。我不知道您使用的是哪个库,所以您必须参考它的文档才能了解如何获取数据。
  • 在客户端代码中我猜你应该在发送之前等待 onopen 回调。
  • 什么是服务器对象?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2015-01-24
相关资源
最近更新 更多