作者:拐久了_618 | 来源:互联网 | 2023-08-08 11:41
Websocket 部署 weblogic 出现问题
提示:在本地tomcat中可以正常发送消息
例如:在服务器上weblogic中发布项目后,出现以下问题
WebSocket connection to 'ws://IP:8000/app/ws?token=a507f7d60a2743f5954ff7d03e49bbe3' failed: Invalid frame header
initWebSocket @ 6.45a48267c40b95452e12.js:1
文章目录
- Websocket 部署 weblogic 出现问题
- 项目背景
- 一、环境
- 二、问题
- 1.前端
- 2.websocket错误码 1006
- 3.weblogic 中错误
- 解决
- 最后可以正常接收数据:
项目背景
公司项目前端页面中需要新增一个消息通知功能,技术点:采用websocket来实现此功能
一、环境
开发环境:采用的是 idea + tomcat
测试环境:weblogic发布项目
二、问题
1.前端
前端报错如下:
WebSocket connection to 'ws://ip:8000/app/ws?token=a507f7d60a2743f5954ff7d03e49bbe3' failed: Invalid frame header
initWebSocket @ 6.45a48267c40b95452e12.js:1
2.websocket错误码 1006
图片如下:
3.weblogic 中错误
The async-support is disabled on this request: weblogic.servlet.internal.ServletRequestImpl@5465779
解决
调试时发现报错出在WebLogicRequestUpgradeStrategy类里的handleSuccess(servletRequest, servletResponse, upgradeInfo, upgradeResponse)函数。AsyncContext asyncContext = request.startAsync()这一步是false。
## 解决办法是在web.xml里添加
<async-supported>true</async-supported>
<servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet>
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported></filter>...
最后可以正常接收数据&#xff1a;