Files
Vetti-Service-new/vetti-admin/src/main/java/com/vetti/socket/FileReceiverConfig.java
2025-10-05 14:13:11 +08:00

59 lines
2.6 KiB
Java

package com.vetti.socket;
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.HandshakeInterceptor;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@Configuration
@EnableWebSocket
public class FileReceiverConfig implements WebSocketConfigurer {
@Bean
public FileReceiverWebSocketHandler fileReceiverWebSocketHandler() {
return new FileReceiverWebSocketHandler();
}
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(fileReceiverWebSocketHandler(), "/voice-websocket")
.addInterceptors(handshakeInterceptor())
.setAllowedOrigins("*"); // 生产环境需替换为具体域名
}
@Bean
public HandshakeInterceptor handshakeInterceptor() {
return new HandshakeInterceptor() {
@Override
public boolean beforeHandshake(org.springframework.http.server.ServerHttpRequest request,
org.springframework.http.server.ServerHttpResponse response,
org.springframework.web.socket.WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
if (request instanceof org.springframework.http.server.ServletServerHttpRequest) {
HttpServletRequest servletRequest =
((org.springframework.http.server.ServletServerHttpRequest) request).getServletRequest();
String clientId = servletRequest.getParameter("clientId");
if (clientId != null && !clientId.isEmpty()) {
attributes.put("clientId", clientId);
return true;
}
}
return false;
}
@Override
public void afterHandshake(org.springframework.http.server.ServerHttpRequest request,
org.springframework.http.server.ServerHttpResponse response,
org.springframework.web.socket.WebSocketHandler wsHandler,
Exception exception) {
// 握手后处理
}
};
}
}