具体错误如下:
使用nginx代理端口请求时直接报403,查资料发现nginx必须配置协议头才能受理webSocket。
配置如下:修改nginx.conf中的http中的server
location / {
proxy_pass http://tomcats;
index index.html index.htm;
###########################################
# 启用支持websocket连接,ng+ssl+ws这样配置,访问的时候是wss://address:ip
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
###########################################
}
测试结果:
结果还是报403,度娘后发现是Origin必须一致,对.do请求的代码做下修改,忽略Origin,加上下面代码:
.setAllowedOrigins("*");
例如(1):
//前台可以使用websocket环境
webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/websocket.do").addInterceptors(new HandshakInterceptor()).setAllowedOrigins("*");
//前台不可以使用websocket环境
webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/sockjs/websocket.do").addInterceptors(new HandshakInterceptor()).withSockJS();
这是我的代码: