Files
easy-admin/src/main/java/com/laker/admin/config/websocket/WebSocketConfig.java
2024-03-29 15:07:41 +08:00

49 lines
2.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.laker.admin.config.websocket;
import com.laker.admin.framework.ext.websocket.EasyChatHandler;
import com.laker.admin.framework.ext.websocket.EasySessionHandshakeInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;
/**
* @author laker
*/
@Configuration
@EnableWebSocket // 启动Websocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
EasyChatHandler webSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(webSocketHandler, "/websocket/**")
// 添加拦截器可以获取连接的param和 header 用作认证鉴权
.addInterceptors(new EasySessionHandshakeInterceptor())
// 设置运行跨域
.setAllowedOrigins("*");
}
/**
* 该配置也会影响stomp方式的websocket
*/
@Bean
public ServletServerContainerFactoryBean createWebSocketContainer() {
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
// 设置默认会话空闲超时 以毫秒为单位 非正值意味着无限超时,默认值 0 默认每10s检查一次空闲就关闭
container.setMaxSessionIdleTimeout(30 * 1000L);
// 设置异步发送消息的默认超时时间 以毫秒为单位 非正值意味着无限超时 ,默认值-1还没看到作用
// container.setAsyncSendTimeout(10 * 1000L);
// 设置文本消息的默认最大缓冲区大小 以字符为单位,默认值 8 * 1024
container.setMaxTextMessageBufferSize(8 * 1024);
// 设置二进制消息的默认最大缓冲区大小 以字节为单位,默认值 8 * 1024
container.setMaxBinaryMessageBufferSize(8 * 1024);
return container;
}
}