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

Kotlin实现SpringBoot WebSocket功能时JS客户端无法运行问题求助

问题排查及解决方案

1. 检查webjars依赖完整性

你只引入了webjars-locator还不够,需要同时引入sockjs和stomp对应的webjars依赖:

  • Maven示例:
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>sockjs-client</artifactId>
    <version>1.5.1</version>
</dependency>
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>stomp-websocket</artifactId>
    <version>2.3.4</version>
</dependency>
  • Gradle Kotlin DSL示例:
implementation("org.webjars:sockjs-client:1.5.1")
implementation("org.webjars:stomp-websocket:2.3.4")

2. 修正HTML中JS资源引用路径

配合webjars-locator使用时不需要加版本号,正确引用写法如下:

<script src="/webjars/sockjs-client/sockjs.min.js"></script>
<script src="/webjars/stomp-websocket/stomp.min.js"></script>

如果还是出现资源404,也可以直接将两个JS文件下载后放入项目resources/static目录下,直接用相对路径引用,避免webjars路径匹配问题。

3. 补充跨域配置(如果前后端端口不一致)

修改WebSocket配置类的端点注册逻辑,添加跨域允许规则:

override fun registerStompEndpoints(registry: StompEndpointRegistry) {
    registry.addEndpoint("/stomp-endpoint")
        .setAllowedOriginPatterns("*") // 生产环境建议替换为实际前端域名
        .withSockJS()
}

4. 确认客户端连接代码逻辑

参考正确的连接代码示例,检查端点路径、调用逻辑是否正确:

// 注意端点路径要和配置的/stomp-endpoint完全一致
const socket = new SockJS('/stomp-endpoint');
const stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    console.log('连接成功:' + frame);
    // 连接成功后再执行订阅、发送消息等逻辑
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:06