首页 > 其他分享 >Springboot3+Vue3在进行WebSocket通讯时出现No mapping for GET或者是404

Springboot3+Vue3在进行WebSocket通讯时出现No mapping for GET或者是404

时间:2024-01-16 21:16:36浏览次数:38  
标签:exporter WebSocket ServerEndpointExporter GET public No class

参考:在 Spring Boot 中整合、使用 WebSocket - spring 中文网 (springdoc.cn)

===============================

原代码(此时前端访问后端,后端会出现:

No mapping for GET /wspath

前端相关代码:

let socket: WebSocket | null = null

const socketURL = `ws://127.0.0.1:8084/wspath/${userId}`
socket = new WebSocket(socketURL.toString()) //  建立ws连接

后端代码:

1.config配置

@Configuration
@EnableWebSocket
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

2.实现类(类中的方法我没粘贴进来)

@Component
@Slf4j
@ConditionalOnClass(value = WebSocketConfig.class)
@CrossOrigin(origins = "*", maxAge = 3600)
@ServerEndpoint(value = "/wspath/{userId}")
public class MyWebSocketHandler {}

======================

看了一下是没有注册WebSocket,但是我已经使用了@Component进行注解,按理Spring会自动扫描注册,但是就是没有成功,搞不明白。

所以我们手动注册一下即可。

======================

前端代码不变,后端只修改config的配置文件:

@Configuration
@EnableWebSocket
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        ServerEndpointExporter exporter = new ServerEndpointExporter();
        exporter.setAnnotatedEndpointClasses(MyWebSocketHandler.class);
        return exporter;
    }
}

如此,就可以接收到前端的建立请求了。

标签:exporter,WebSocket,ServerEndpointExporter,GET,public,No,class
From: https://www.cnblogs.com/MorningMaple/p/17968546

相关文章