websocket 生成完整的文件

This commit is contained in:
wangxiangshun
2025-10-05 14:13:11 +08:00
parent ab7213e4ab
commit eeeb176098
4 changed files with 206 additions and 8 deletions

View File

@@ -0,0 +1,58 @@
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) {
// 握手后处理
}
};
}
}