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

如何在javax WebSocket连接建立时接收服务器发送的消息?

为什么你接收不到服务器发送的消息?

很遗憾,你当前的客户端代码无法接收到服务器在@OnOpen里发送的消息,问题出在对WebSocket事件的理解和使用上,下面给你详细解释并给出修复方案:

核心问题:用错了事件监听

客户端的ws.onopen事件仅用于通知你「WebSocket连接已成功建立」,这个事件的event对象里根本没有message或data属性——你拿到undefined就是因为这个原因。

服务器在@OnOpen方法中发送的文本消息,属于标准的WebSocket消息,这类消息只会触发客户端的onmessage事件,而非onopen。

修正后的客户端代码

你需要把接收消息的逻辑放到onmessage回调里,同时保留onopen用于连接成功的提示:

// 监听连接建立成功的事件
ws.onopen = function(event) {
    console.log("WebSocket连接已成功建立");
};

// 监听服务器发送的消息(包括@OnOpen里的初始化消息)
ws.onmessage = function(event) {
    document.getElementById('messages').innerHTML = event.data;
};

关于@OnError的补充说明

如果你的@OnError方法是想向客户端发送错误提示信息,同样需要通过Session.sendText()来发送,客户端还是要通过onmessage事件接收这条错误消息。

如果是WebSocket连接层面的错误(比如连接中断、协议错误),客户端可以监听ws.onerror事件,但这个事件的event对象也不会直接包含服务器主动发送的错误文本,主动发送的错误信息依然要靠onmessage来捕获。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:28:12