websocket配置类
时间: 2023-09-29 16:03:23 浏览: 79
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。在 Java 中,使用 Spring 框架的 WebSocket 模块可以方便地进行 WebSocket 编程。以下是一个 WebSocket 配置类的示例:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler/{userId}")
.setAllowedOrigins("*")
.addInterceptors(new WebSocketInterceptor())
.withSockJS();
}
@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}
}
```
上述代码中,`WebSocketConfig` 类使用了 `@Configuration` 注解,表示这是一个配置类。同时还使用了 `@EnableWebSocket` 注解,表示启用 WebSocket 功能。`WebSocketConfigurer` 接口中有一个 `registerWebSocketHandlers` 方法,该方法会注册一个 WebSocket 处理器,并指定它的路径和一些其他的属性。
在上述代码中,我们注册了一个名为 `myHandler` 的 WebSocket 处理器,并指定了它的路径为 `/myHandler/{userId}`。`setAllowedOrigins("*")` 方法表示允许跨域请求,这里是允许所有主机访问。`addInterceptors` 方法可以添加一个 WebSocket 拦截器,这里我们添加了一个自定义的拦截器 `WebSocketInterceptor`。最后,使用 `withSockJS()` 方法启用 SockJS 功能,以便在不支持 WebSocket 的浏览器上也能使用 WebSocket。
下面是一个简单的 WebSocket 处理器的示例代码:
```java
public class MyHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
session.sendMessage(new TextMessage("Received message: " + payload));
}
}
```
在上述代码中,我们继承了 `TextWebSocketHandler` 类,该类实现了 `WebSocketHandler` 接口并提供了一些默认实现。重写了 `handleTextMessage` 方法,该方法会在收到文本消息时被调用。在这个示例中,我们简单地将接收到的消息发送回客户端。
阅读全文