最近在研究基于https的WebSocket,本地测试一切OK。但是一部署到生产服务器上,Web端只要一new WebSocket(url),就返回握手失败404。各种方法都试过了,全部无效。元旦3天假,哪也没去,就天天在家弄这个 :(
什么改nginx的Upgrade升级啦(这个是必须改的),注释掉WebsocketConfig类中的Bean啦(我压根就没建这个类),maven中排除内置Tomcat啦。SocketServer删除@Component注解啦,等等。
最后才发现,原来是因为我的程序是两段式,如下
我把@ServerEndpoint这个SocketServer放在了shiro-core这个工程里。这个工程最终是打包成一个jar包,供admin工程调用,SpringBoot主程序在admin中。
所以外部Tomcat会注解不到SocketServer。
挪到admin工程中后,一切OK!简直晕死
<groupId>com.zyd.shiro</groupId>
<artifactId>shiro</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>shiro-core</module>
<module>shiro-admin</module>
</modules>
<name>shiro</name>
<description>Demo project for Spring Boot</description>