背景:
前后端使用webSocket通信,线下测试没问题,部署线上不能正常使用。
问题1:连接时404,找不到后端onOpen路径
方案1:
nginx配置:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
location / {
proxy_pass http://127.0.0.1:7001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
方案2:
查看你的socket服务类上有没有项相关注解@Component或者@RestController
这俩个随便一个都可以,否则spring无法发现注册bean
@ServerEndpoint("/{tenantName}/socket/{sessionId}")
@Component
@Slf4j
public class WebSocketServer {
}
方案3:
使用springboot 容器需要注册ServerEndpointExporter
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}