struts2+websocket报错:failed: Error during WebSocket handshake: Unexpected response code:404
最近把websocket集成进项目里面来,打开网页总是会遇到这样的错误。
网上说的原因有3种,但是都不适合我,但是也记录下。
1.struts2截拦掉了ws的请求。这种援用可以尝试把web.xml清空,如果可以连接,则是这个问题。此时在struts.xml的配置文件中添加:
<constant name="struts.action.excludePattern" value="ws://*"></constant>
对ws的请求不截拦。
2.jar包的冲突,项目里的jar包跟tomcat中的jar包冲突。
3.把java project 转化为 web project,调整包加载顺序。
然后就是自己的解决方法,ws请求的url规则是这样的:地址+端口+endpoint路径。如果在java文件中定义了端点:
@ServerEndpoint(value="/echoendpoint")
并且在本地8080端口运行,则url为 http://127.0.0.1:8080/echoendpoint
java7的websocket只需要配置endpoint,页面的JS就可以连接上,无需servlet或其他配置,只需注意下url。