精华内容
下载资源
问答
  • 今天看了一眼之前写的前端代码,发现一个明显的问题 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

    解决方法:使用心跳

     

    展开全文
  • 这段代码在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);

    }

    展开全文
  • 背景:公司需要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:15
    Uncaught InvalidStateError: Failed to ...1、服务器会收到客户端的连接 2、客户端不会收到服务器的握手返回,onopen函数不会被触发。 主要是websocket和tcp的握手不一致。需要将服务器的socket改成websock
  • 其分布式机器端能够接收服务器端命令,发送心跳包,发送异常信号,发送设备状态变化命令等。环境数据库:MySql 5.1.53数据库可视化管理软件:Wamp Server浏览器:Chrome 54.0.2840.87 m (64-bit)IDE:Eclipse系...
  • 笔记 项目结构 代码 @Slf4j @Component @ServerEndpoint("/echo/{sid}") ... * concurrent包的线程安全Set,用来存放每个客户端对应的WebSocketServer对象 */ private static CopyOnWrite...
  • ////监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = function(){ websocket.close(); }; } ``` --- --- -...
  • Android 简单的webSocket连接,连接失败,连接成功,服务器关闭等异常回调......
  • var socket = new WebSocket(host); console.log("opening socket..."); socket.onopen = function () { console.log('Socket Status: ' + socket.readyState + ' (open)'); socket.send("2"); console.log(...
  • 在使用websocket的时候,遇到了一个websocket连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳思想...
  • websocket实现心跳连接

    2019-09-26 10:15:48
    在使用websocket的时候,遇到了一个websocket连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳...
  • 项目要做一个后台消息发送,在测试过程中,发现每隔1分半自由,WebSocket会走OnError方法,将异常抛出,异常是java.io.EOFException.然后走@OnClose方法,将连接自动关闭.怀疑是nginx默认60秒断开连接的原因.于是本地搭建...
  • 在使用websocket的时候,遇到了一个websocket连接一段时间就异常断开连接了。第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档发现,要想重新建立连接,就需要一种心跳思想...
  • WebSocket发生EOFException异常

    万次阅读 热门讨论 2018-08-16 15:29:45
    应用服务器使用两台做负载均衡,一台Web服务器部署Nginx做代理,登录系统之后总是会报java.io.EOFException异常异常内容如下,从错误可以看出是WebSocket走了OnError方法,断开了连接,因为是使用的Nginx做代理,...
  • 在部分项目现场出现异常的情况。 开始阶段排查业务代码,加上只是部分现场出现异常的情况,分析,环境的问题应该大于代码的问题。 在网上查找,Websock 异常一般有这么几种情况: websock监听端口冲突或被防火墙...
  • <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 ...
  • 文章目录5.1、线程注意事项5.2、异常处理5.2.1、部署异常5.2.2、WebSocket应用程序代码中的错误5.2.3、容器和底层连接中的错误 5.1、线程注意事项 WebSocket API实现可以采用多种线程策略,以提供可伸缩的实现。该...
  • 应用服务器使用两台做负载均衡,一台Web服务器部署Nginx做代理,登录系统之后总是会报java.io.EOFException异常异常内容如下,从错误可以看出是WebSocket走了OnError方法,断开了连接,因为是使用的Nginx做代理,...
  • ....//省略其他异常信息 at com.xxxxxx.energymanagement.CrossFilter.doFilter(CrossFilter.java:37) ~[classes!/:0.0.1-SNAPSHOT] .....//省略其他异常信息 错误中,只有这一句是关于项目中文件,而且是...
  • 在springmvc中集成websocket时因为是使用外置tomcat,基本上没有太多的问题,但是在springboot中,因为springboot内置了tomcat,会导致websocket连接异常,直接出现404. 解决办法有两个: 1:使用外置tomcat。舍弃...
  • 以前的文章中有写过如何在websocket中获取httpsession。 但是今天将项目发布在...在前端连接WebSocket的时候,我的代码是这样的: loadWS("ws://127.0.0.1/chatRoom/null"); 1 然而浏览器地址栏是这样的: ...
  • 导读小编昨天花了一个小时自制了一个WebSocket测试小工具,和网络上搜索到的在线工具类似,可以实现WebSocket连接、断开...代码部分看完效果之后话不多说直接上WebSocket核心代码,通常分为连接、接收、发送、异常...
  • 知识点:websocket获取本机IP&amp;websocket前后端消息推送 解决的实际问题: ... ... 主要实现思路: 1.前端websocket 推送消息,创建一个new websocket,将前端的...2.前后端建立连接触发,客户端可以通过这个URL...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 215
精华内容 86
关键字:

websocket连接异常