“接收”;错误:InvalidStateError:DOM异常11“;在HTML5 websocket上使用Node.js调用.send(数据)时

“接收”;错误:InvalidStateError:DOM异常11“;在HTML5 websocket上使用Node.js调用.send(数据)时,html,node.js,websocket,socket.io,Html,Node.js,Websocket,Socket.io,我目前正在尝试使用node.js开发一个小型聊天应用程序。这是我的第一个节点项目,但我得到了一个错误,我真的不知道如何解决它 我在下面的node中编写了一个简单的聊天服务器 var port = 3000; var net = require('net'); var clients = []; var server = net.createServer(function (socket) { clients.push(socket); bindEventHandlers(socket)

我目前正在尝试使用node.js开发一个小型聊天应用程序。这是我的第一个节点项目,但我得到了一个错误,我真的不知道如何解决它

我在下面的node中编写了一个简单的聊天服务器

var port = 3000;
var net = require('net');
var clients = [];

var server = net.createServer(function (socket) {
  clients.push(socket);
  bindEventHandlers(socket);
});

setInterval(function(){
  console.log(clients.length);
}, 2000);

server.listen(port);
console.log('Server is listening on localhost:' + port);

function bindEventHandlers(socket) {
  socket.on('data', function(data){
    broadcastDataToAllClient(data, socket);
  });
  socket.on('close', function(){
    clients.splice(clients.indexOf(socket), 1);
  });
  socket.on('error', function(){
    console.log('Known Error << "It\'s a feature!"');
  })
}

function broadcastDataToAllClient(data, socket) {
  for (var client in clients) {
      if(clients[client] == socket){ continue; }
      clients[client].write(data);
  }
}
var端口=3000;
var net=要求的(‘净额’);
var客户=[];
var server=net.createServer(函数(套接字){
客户端。推(插座);
bindEventHandlers(套接字);
});
setInterval(函数(){
console.log(clients.length);
}, 2000);
监听(端口);
log('服务器正在本地主机上侦听:'+端口);
函数bindEventHandlers(套接字){
socket.on('data',函数(data){
将数据广播到所有客户端(数据、套接字);
});
socket.on('close',function(){
客户机拼接(客户机索引(插座),1);
});
socket.on('error',function()){

console.log(
webSocket.send('some data')时的已知错误
必须建立套接字连接,特别是socket.readyState==1

您可以检查websocket事件。为了确保不会发生这种情况,您应该在连接打开后使用
Socket.onopen
事件处理程序发送。您可以这样做

if(webSocket.readyState == 1){
    webSocket.send('some data');
  }
else{
    webSocket.onopen = function(e){
        webSocket.send('some data');
    }
}

您好,谢谢您的提示。我担心它不起作用。我通过在chrome控制台中调用.send()确认了这一点,它产生了相同的错误。好的,谢谢,这样就消除了错误,但它仍然没有发送消息。我现在想它还没有从服务器获得“完全连接”(如果您知道我的意思的话)因此它为什么不发送消息。@alexjfno1,很抱歉忽略了它,但是
net
模块是用于TCP套接字而不是WebSocket的。这就是为什么您无法连接到节点服务器。您必须使用类似socket.io的东西。检查更多有意义的模块OK,感谢您的帮助和建议。感谢链接和我会看一看,试着做点什么。
if(webSocket.readyState == 1){
    webSocket.send('some data');
  }
else{
    webSocket.onopen = function(e){
        webSocket.send('some data');
    }
}