-
如何捕获新建websocket 的异常
2020-03-04 17:56:26今天看了一眼之前写的前端代码,发现一个明显的问题 try { socket = new WebSocket(host); } catch (e) { ...websocket 发生异常, 是catch不到的,因为新建websocket连接是异步的,异常抛出是同步的...今天看了一眼之前写的前端代码,发现一个明显的问题
try { socket = new WebSocket(host); } catch (e) { reconnect(); }
websocket 发生异常, 是catch不到的,因为新建websocket连接是异步的,异常抛出是同步的,解决办法是通过onerror事件监听
socket.onerror = function(){}
-
websocket异常
2020-07-21 18:48:43解释:连接被强制中断 java.io.IOException: Unable to unwrap data, invalid status [CLOSED] java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer 解释...java.io.IOException: Broken pipe
解释:连接被强制中断
java.io.IOException: Unable to unwrap data, invalid status [CLOSED]
java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer解释:连接读取超时,如果使用了nginx检查配置proxy_read_timeout
解决方法:使用心跳
-
websocket创建失败_ie11 websocket连接建立时报SecurityError问题
2020-12-29 06:36:44这段代码在chrome和firefox下是没有问题的,但是换成ie11之后,在for循环那块,前6个次都成功了,但是从第7次到第10次全都失败了,new WebSocket返回异常SecurityError。function Socket(wsUrl){try {this._connect...这段代码在chrome和firefox下是没有问题的,但是换成ie11之后,在for循环那块,前6个次都成功了,但是从第7次到第10次全都失败了,new WebSocket返回异常SecurityError。
function Socket(wsUrl){
try {
this._connect(wsUrl);
} catch (e) {
console.warn(e);
try {
this._connect(wsUrl);
} catch (e) {
console.error(e);
}
}
}
Socket.prototype = {
_connect: function(wsUrl) {
if("WebSocket" in window){
this.io = new WebSocket(wsUrl);
}else if("MozWebSocket" in window){
this.io = new MozWebSocket(wsUrl);
}
if (this.io) {
this.io.binaryType = "arraybuffer";// talking binary
this._addEvent();
}
},
_addEvent : function() {
this.io.onopen = function() {
console.log("WebSocket connection opened!");
};
this.io.onclose = function(){
console.log("WebSocket closed!");
};
this.io.onerror = function(evt){
console.log(evt.toLocaleString());
};
}
};
var lserver = 'websocket服务器域名';
for(var i=0;i<10;i++) {
setTimeout(function(){
var socket = new Socket('ws://'+lserver+':8110/ws/conn');
},i*1000);
}
-
netty連接異常處理_netty优化 (-) websocket解码异常后自动断开连接处理
2020-12-21 13:02:26背景:公司需要25台设备组网,用户通过客户端登录后对25台机子进行监控操作(包括视频播放)。...由于环境比较简单,后台服务采用netty的websocket协议进行通信,消息指令进行权限管理。问题描述:1、25台设备...背景:
公司需要25台设备组网,用户通过客户端登录后对25台机子进行监控操作(包括视频播放)。
技术方案:
产品分为设备端、客户端、服务端。为兼容以后的浏览器访问,选java搭建服务器。服务器主要业务包括客户端用户管理、客户端业务指令、权限;设备端登记、发现、在线监测、分组管理、权限。
由于环境比较简单,后台服务采用netty的websocket协议进行通信,消息指令进行权限管理。
问题描述:
1、25台设备搭建后进行压力测试,百兆路由可25路视频的2个客户端,3个客户端同时打开会导致设备掉线频繁,(添加重连限制客户端个数)。
2、OOM,outof direct memory,此问题很懵逼。netty中derectmemory 是框架中进行计数处理的,测试中计数增长到一定值后保持稳定不存在超出;channelread0方法中会自动释放bytebuf; 此问题无法重现,只好添加jvm内存待以后重现再处理!
3、长时间挂机无任何操作出现客户端或者设备掉线问题,查看日志多是和decode解码有关,消息异常解码出错,netty自动关闭通道断开了连接。
测试结果:设备端掉线明显;消息解析错误后直接关闭了连接;偶尔出现一个大的数据包接收一半后断开连接;
websocket基于TCP协议,在不稳定的网络环境下发送大量数据,并且发送频率非常高,很可能会出现错误(1、程序处理逻辑错误;2、多线程同步问题;3、缓冲区溢出等)。这掉线的频率让人很难接收,抓包也是抓的崩溃, 放弃了! 几个同事之间可能也都踢了好几周的皮球,呵呵,感觉对不起公司的同事们。首先让客户端和设备端全部添加了断线重连、优化设备端发送频率、服务端缓存一些消息。
业务上做了优化之后,掉线有所缓解,但是偶尔一次的掉线的确让人抓狂,尤其是这么小的局域网中,为了从这个锅中脱离, 决定还是要有所优化, 可怕的框架bug ~~
A.下netty参数,消息队列默认128 ,加到1024 ; 避免数据包的缓存
ServerBootstrap b = new ServerBootstrap();
b.option(ChannelOption.SO_BACKLOG, 1024)
.childOption(ChannelOption.TCP_NODELAY,true)
B. 异常不关闭
重写WebSocketDecoderConfig.closeOnProtocolViolation修改默认值。
ByteToMessageDecoder 中解析完后,
callDecode(ChannelHandlerContext ctx, ByteBuf in, List out) 方法中 将 WebSocket08FrameDecoder的 state 重置为 WebSocket08FrameDecoder.State.READING_FIRST
重写ByteToMessageDecoder .java 中callDecode 添加抽象方法initState
protected void callDecode(ChannelHandlerContext ctx, ByteBuf in, List out) {
try {
while(true) {
if (in.isReadable()) {
int outSize = out.size();
if (outSize > 0) {
fireChannelRead(ctx, out, outSize);
out.clear();
if (ctx.isRemoved()) {
return;
}
outSize = 0;
}
int oldInputLength = in.readableBytes();
this.decodeRemovalReentryProtection(ctx, in, out);
if (!ctx.isRemoved()) {
if (outSize == out.size()) {
if (oldInputLength != in.readableBytes()) {
continue;
}
} else {
if (oldInputLength == in.readableBytes()) {
throw new DecoderException(StringUtil.simpleClassName(this.getClass()) + ".decode() did not read anything but decoded a message.");
}
if (!this.isSingleDecode()) {
continue;
}
}
}
}
if ( ctx.name().equals("wsdecoder")){
try{
this.initState(ctx, in, out);
}catch (Exception E){
}
}
return;
}
} catch (DecoderException var6) {
throw var6;
} catch (Exception var7) {
throw new DecoderException(var7);
}
}
protected abstract void initState(ChannelHandlerContext var1, ByteBuf var2, List var3) throws Exception;
重写WebSocket08FrameDecoder.java 中添加initState
protected void initState(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception {
if(this.state == WebSocket08FrameDecoder.State.CORRUPT){
this.state = WebSocket08FrameDecoder.State.READING_FIRST;
}
}
不将state 设置为READING_FIRST ,通道解析出现异常后,WebSocket08FrameDecoder每次消息解析都会走CORRUPT,跳过了正常解析 。
-
websocket客户端与TCP服务器连接异常
2017-08-11 06:41:15Uncaught InvalidStateError: Failed to ...1、服务器会收到客户端的连接 2、客户端不会收到服务器的握手返回,onopen函数不会被触发。 主要是websocket和tcp的握手不一致。需要将服务器的socket改成websock -
websocket连接mysql_J2EE + WebSocket + MySQL 实现简单监控系统
2021-01-31 04:39:14其分布式机器端能够接收服务器端命令,发送心跳包,发送异常信号,发送设备状态变化命令等。环境数据库:MySql 5.1.53数据库可视化管理软件:Wamp Server浏览器:Chrome 54.0.2840.87 m (64-bit)IDE:Eclipse系... -
WebSocket接收前端图片自动断开连接异常
2019-12-18 20:21:02笔记 项目结构 代码 @Slf4j @Component @ServerEndpoint("/echo/{sid}") ... * concurrent包的线程安全Set,用来存放每个客户端对应的WebSocketServer对象 */ private static CopyOnWrite... -
vue前端websocket连接不上springboot,报错Connection closed before receiving a handshake response
2019-09-24 11:13:17////监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = function(){ websocket.close(); }; } ``` --- --- -... -
Android 简单的webSocket长连接
2020-10-26 15:20:19Android 简单的webSocket长连接,连接失败,连接成功,服务器关闭等异常回调...... -
Websocket无法连接但不能抛出异常
2014-05-18 12:23:03var socket = new WebSocket(host); console.log("opening socket..."); socket.onopen = function () { console.log('Socket Status: ' + socket.readyState + ' (open)'); socket.send("2"); console.log(... -
client心跳 websocket_websocket实现心跳连接
2020-12-23 07:36:02在使用websocket的时候,遇到了一个websocket在连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳思想... -
websocket实现心跳连接
2019-09-26 10:15:48在使用websocket的时候,遇到了一个websocket在连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳... -
websocket自动断开连接,并抛出EOFException异常
2019-12-05 10:34:01项目要做一个后台消息发送,在测试过程中,发现每隔1分半自由,WebSocket会走OnError方法,将异常抛出,异常是java.io.EOFException.然后走@OnClose方法,将连接自动关闭.怀疑是nginx默认60秒断开连接的原因.于是本地搭建... -
websocket心跳链接代码_websocket实现心跳连接
2020-12-22 01:33:28在使用websocket的时候,遇到了一个websocket在连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳思想... -
WebSocket发生EOFException异常
2018-08-16 15:29:45应用服务器使用两台做负载均衡,一台Web服务器部署Nginx做代理,登录系统之后总是会报java.io.EOFException异常,异常内容如下,从错误可以看出是WebSocket走了OnError方法,断开了连接,因为是使用的Nginx做代理,... -
websocket推送消息异常(连接意外断开)解决方法
2019-05-03 15:16:36在部分项目现场出现异常的情况。 开始阶段排查业务代码,加上只是部分现场出现异常的情况,分析,环境的问题应该大于代码的问题。 在网上查找,Websock 异常一般有这么几种情况: websock监听端口冲突或被防火墙... -
反向 WebSocket(API)客户端连接失败或异常断开;[W] [反向WS] 反向 WebSocket(Event)客户端连接失败或...
2020-11-30 02:09:09<div><p>控制台输出如下: C:\QQrobot>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe c:/QQrobot/test.py ujson module not found, using json [2020-01-03 11:26:04,697 ... -
第五章、WebSocket异常处理和线程
2021-02-03 21:02:00文章目录5.1、线程注意事项5.2、异常处理5.2.1、部署异常5.2.2、WebSocket应用程序代码中的错误5.2.3、容器和底层连接中的错误 5.1、线程注意事项 WebSocket API实现可以采用多种线程策略,以提供可伸缩的实现。该... -
.net websocket 获取http登录的用户_WebSocket发生EOFException异常
2020-12-26 20:22:14应用服务器使用两台做负载均衡,一台Web服务器部署Nginx做代理,登录系统之后总是会报java.io.EOFException异常,异常内容如下,从错误可以看出是WebSocket走了OnError方法,断开了连接,因为是使用的Nginx做代理,... -
【WebSocket】SpringBoot中,WebSocket客户端连接服务端时,出现SockJsException: Uncaught failure in ...
2019-02-21 09:59:36....//省略其他异常信息 at com.xxxxxx.energymanagement.CrossFilter.doFilter(CrossFilter.java:37) ~[classes!/:0.0.1-SNAPSHOT] .....//省略其他异常信息 错误中,只有这一句是关于项目中文件,而且是... -
springBoot集成websocket中问题
2019-12-26 16:06:00在springmvc中集成websocket时因为是使用外置tomcat,基本上没有太多的问题,但是在springboot中,因为springboot内置了tomcat,会导致websocket连接异常,直接出现404. 解决办法有两个: 1:使用外置tomcat。舍弃... -
WebSocket获取httpsession时空指针异常
2018-12-04 22:29:43以前的文章中有写过如何在websocket中获取httpsession。 但是今天将项目发布在...在前端连接WebSocket的时候,我的代码是这样的: loadWS("ws://127.0.0.1/chatRoom/null"); 1 然而浏览器地址栏是这样的: ... -
前端连接websocket失败_自制WebSocket测试工具(前端篇)
2021-01-08 23:19:25导读小编昨天花了一个小时自制了一个WebSocket测试小工具,和网络上搜索到的在线工具类似,可以实现WebSocket的连接、断开...代码部分看完效果之后话不多说直接上WebSocket核心代码,通常分为连接、接收、发送、异常... -
使用websocket来监控是否异常退出或异常关闭登陆窗口
2017-12-06 12:34:00知识点:websocket获取本机IP&websocket前后端消息推送 解决的实际问题: ... ... 主要实现思路: 1.前端websocket 推送消息,创建一个new websocket,将前端的...2.前后端建立连接触发,客户端可以通过这个URL...
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
《文本处理 awk sed grep ”三剑客”》
-
MySQL 视图
-
【拯救者 】数据库系统概论速成
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
求教各位前辈,图片中的符号啥意思
-
标签上的title属性和alt属性有什么区别
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
FFmpeg4.3系列之16:WebRTC之小白入门与视频聊天的实战
-
linux/windows下查看目标文件.a/.lib的函数符号名称
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
使用vue搭建微信H5公众号项目
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
精通编译Makefile,Nina, 从底层uboot到Android
-
JavaScript 高阶版「检测数据类型方法」
-
数学建模之常用模型.rar
-
LY3086设计3.7V锂电池充电+FP6291设计5V1A稳压输出电路AD设计硬件原理图+PCB封装库+BOM表文件.zip
-
2021年茶艺师(中级)试题及答案及茶艺师(中级)考试平台
-
可用于反查贷款利率的贷款计算器
-
MySQL 主从复制 Replication 详解(Linux 和 W