websocket.send() 参数

Posted

技术标签:

【中文标题】websocket.send() 参数【英文标题】:websocket.send() parameter 【发布时间】: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 地址”是什么意思?服务器可以将数据发送到与其连接的套接字之一——您可能不需要在服务器端编写特定地址。 【参考方案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 回调。 什么是服务器对象?

以上是关于websocket.send() 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用websocket.send时如何知道消息何时到达?

HTML5的webSocket怎么理解

web socket 入门

上传文件时截断 Web 套接字块

SuperWebSocket

(转)WebSocket学习