You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行http4s WebSocket示例后,Chrome控制台发送消息报错:仍处于CONNECTING状态

解决WebSocket仍在CONNECTING状态时调用send的错误

这个问题我碰到过好多次啦,本质是WebSocket的异步连接特性导致的——你刚创建WebSocket实例就立刻调用send,此时连接还处于CONNECTING状态(还没进入OPEN就绪状态),浏览器自然会抛出这个DOM异常。

快速修复方案

你需要等待WebSocket连接成功建立后,再发送消息。利用WebSocket的onopen事件就能实现这一点,修改你的代码如下:

var ws = new WebSocket("ws://localhost:8080/http4s/wsecho");
// 当连接成功打开后再发送消息
ws.onopen = function() {
  ws.send("Hi");
  console.log("消息已成功发送到服务器");
};

进阶调试与监听

为了更清晰地掌握连接状态,你可以添加完整的事件监听,方便排查后续可能出现的问题:

var ws = new WebSocket("ws://localhost:8080/http4s/wsecho");

// 连接成功打开
ws.onopen = function() {
  console.log("WebSocket连接就绪,当前状态:", ws.readyState); // readyState=1代表OPEN
  ws.send("Hi");
};

// 收到服务器消息
ws.onmessage = function(event) {
  console.log("收到服务器回复:", event.data);
};

// 连接关闭
ws.onclose = function() {
  console.log("WebSocket连接已关闭");
};

// 连接出错
ws.onerror = function(error) {
  console.error("WebSocket发生错误:", error);
};

额外检查点

别忘了确认你的http4s WebSocket服务确实在ws://localhost:8080/http4s/wsecho端点正常运行,如果服务没启动或者路径配置错误,连接会一直卡在CONNECTING状态,甚至直接触发error事件。

内容的提问来源于stack exchange,提问作者Nikita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:08:14