websocket推送消息异常(连接意外断开)解决方法

最近项目在现场部署运行过程中,出现websock不可用的情况,提交请求后无返回结果的响应。

大部分项目现场运行正常。在部分项目现场出现异常的情况。

开始阶段排查业务代码,加上只是部分现场出现异常的情况,分析,环境的问题应该大于代码的问题。

在网上查找,Websock 异常一般有这么几种情况:

  1. websock监听端口冲突或被防火墙拦截。
  2. tomcat下面的catalina.jar 以及websock-api.jar 与项目中导入的重复的jar冲突。
  3. 部署环境使用了nigix ,需要进行配置。
  4. sevlet版本问题,需要修改web.xml。
  5. 网络原因导致连接超时。最常见的情况!!!

而,经过分析后得出我这个问题便是网络不稳定造成的,因连接超时引起的。

运行环境centos7.5 jdk1.8 tomcat7

log文件打印报错信息如下。

这种错误需要修改两个地方。

1、是把超时时间设定的大一点。2、是像报错信息中说的一样,修改web.xml文件,使他支持异步。在sevlet和filter下面添加<async-supported>true</async-supported> 这句代码。

修改超时时间的设置,即sockjs-0.3.min.js中的rtt时间。具体版本因自己的项目而定。

 

web.xml中修改如下

在filter中的添加位置要留意。多个filter以及sevlet的情况,添加要根据自己工程的具体情况而定。每个sevlet及filter上添加也是不可以的!在我的项目中只添加在了struts2配置以及appsevlet配置这两个下面。

参考文档

https://www.cnblogs.com/guangshan/p/4916993.html

https://www.cnblogs.com/zuochanzi/p/9755486.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js可以使用WebSocket来实现消息。以下是一个基本的示例代码: 首先,在Vue.js中安装WebSocket依赖: ``` npm install vue-native-websocket ``` 然后,在你的Vue组件中,使用以下代码来创建WebSocket连接并处理消息: ```vue <template> <div> <ul> <li v-for="message in messages" :key="message.id">{{ message.text }}</li> </ul> </div> </template> <script> import { WebSocketPlugin } from "vue-native-websocket"; export default { data() { return { messages: [] }; }, mounted() { this.$options.sockets = { // 在这里定义WebSocket连接地址 messages: "wss://example.com/ws" }; this.$connect(); // 连接WebSocket // 监听消息 this.$on("messages", message => { this.messages.push(message); }); }, beforeDestroy() { this.$disconnect(); // 断开WebSocket连接 } }; </script> ``` 在上面的代码中,你需要将连接地址 `wss://example.com/ws` 替换为你实际使用的WebSocket服务地址。在`mounted`生命周期钩子中,我们通过`this.$options.sockets`定义了一个名为`messages`的Socket连接,并在`this.$connect()`中连接到该Socket。然后,通过`this.$on("messages", ...)`监听由服务器过来的消息,并将其添加到`messages`数组中。 当组件销毁时,我们需要通过调用`this.$disconnect()`来断开WebSocket连接,以避免资源泄漏。 这只是一个简单的示例,你可以根据自己的需求来扩展和优化代码。同时,你还需要在服务器端实现WebSocket接口,将消息给Vue.js客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值