59 lines
2.6 KiB
Java
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) {
|
|
// 握手后处理
|
|
}
|
|
};
|
|
}
|
|
}
|