由于项目需要定时将消息从Web端推送至客户端通常使用的方式有:AJAX轮询、XHR长轮询、iframe、Comet、websocket等
考虑实现的难度及复杂度,最终选用WebSocket方式。
org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'serverEndpointExporter'definedinorg.lwt.WebsocketServerTestApplication:Invocationofinitmethodfailed;nestedexceptionisjava.lang.IllegalStateException:javax.websocket.server.ServerContainernotavailable atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE] ...原因:WebSocket是servlet容器所支持的,所以需要加载servlet容器:webEnvironment参数为springboot指定ApplicationContext类型。webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT表示内嵌的服务器将会在一个随机的端口启动。
WebSocket使用注意事项:心跳包切记不要放到initWebSocket()方法中,否则会产生递归循环调用并无限创建WebSocket对象,引发的结果就是nginx的连接数被刷爆,导致使用当前nginx的所以服务无法使用(相当于攻击),之前没注意,心已碎,偶买噶达!!!!!!