em websocket和javascript客户端连接

em websocket和javascript客户端连接,websocket,eventmachine,em-websocket,Websocket,Eventmachine,Em Websocket,我有一个简单的eventmachine web套接字服务器(eventmachine 1.0.0): 在以前版本的safari中,它可以完美地与最新版本配合使用,因为客户端没有连接到服务器 我在上一个Chrome开发稳定版上也试过了,但不起作用 web套接字标头已发送,但仍处于挂起状态 如果我向web套接字发送文本消息,我将收到无效\u状态\u错误:DOM异常11 我看到有一个草稿更改,但我认为em websocket 0.3.8已经实现了它 你能帮我解决这个问题吗 非常感谢无效状态\u错误:D

我有一个简单的eventmachine web套接字服务器(eventmachine 1.0.0):

在以前版本的safari中,它可以完美地与最新版本配合使用,因为客户端没有连接到服务器

我在上一个Chrome开发稳定版上也试过了,但不起作用

web套接字标头已发送,但仍处于挂起状态

如果我向web套接字发送文本消息,我将收到
无效\u状态\u错误:DOM异常11

我看到有一个草稿更改,但我认为em websocket 0.3.8已经实现了它

你能帮我解决这个问题吗


非常感谢

无效状态\u错误:DOM异常11表示您的websocket尚未处于就绪状态

您可以通过socket.readyState检查websocket对象的状态 当socket.readyState==1时,您可以发送消息

我通过使用超时创建了一个周转

timerId = setInterval(sendDataWhenReady, 1000);
function sendDataWhenReady(){
  if(socket.readyState == 1){
    ws.send(JSON.stringify({"type": 'STATUS', "status": status, "username": logged_in_user}))
    clearInterval(timerId);
  }
}

感谢您的正确解释,但我的问题是websocket未处于就绪状态,这意味着当您尝试通过websocket连接发送某些数据时,它当时还未就绪尝试使用浏览器的javascript控制台发送该数据,它不会引发错误:)
socket = new WebSocket("ws://localhost:8080");

socket.onopen = function(e) {
  socket.send('Connesso');
};

socket.onmessage = function(mess) {
  if (mess) {
    socket.send(mess);
  }
};

socket.onclose = function(e) {
  socket.send('Disconnesso');
};
timerId = setInterval(sendDataWhenReady, 1000);
function sendDataWhenReady(){
  if(socket.readyState == 1){
    ws.send(JSON.stringify({"type": 'STATUS', "status": status, "username": logged_in_user}))
    clearInterval(timerId);
  }
}