zoukankan      html  css  js  c++  java
  • netty websocket集群下遇到的问题

    记一次集群环境下websocket频繁断开的问题及原因

    前言:

      项目是一个前后端分离的项目,前端使用react,后端使用springCloud,由于业务需求,公司大部分场景需要用到实时通知,系统使用人数较多,在网上主要比较了tigase和websocket两种推送,最终选择了websocket。这里简单介绍一个几种实现方式,第一种是自己基于netty方式实现websocket,第二种是tomcat自带的websocket,第三种是spring封装的websocket,第四种是使用第三方封装的netty-socketIo。这里主要讲一下第四种实现方式。

      在开发的第一版中使用netty实现websocket,但是线上集群环境频繁出现连接又断开的情况,有时连接稳定3分钟,有时20秒,刚开始以为是长连接超时自动断开引起的,于是加了一个业务心跳,5秒钟处理一次,保持连接,但是...依然还是会出现断开的情况。无奈...

      继续寻找问题,寻找是否是代理的问题、nginx超时设置并无异常。。。于是又从前端webpack的代理寻找问题...单个账号连接的时候发现真的是稳定的一p,并未出现连接问题,但是人一多,又会出现频繁断开连接...于是乎又在猜想是不是网络的问题...发现网络也没问题(心态炸裂...),无奈...

      考虑到websocket服务是写在zuul路由模块中的,不知道是否和zuul有关系..在偶然的一篇文章中看到了说低版本的zuul1.x不支持ws协议..于是打开zuul版本一看... 

    解决方案:

      把netty 换成netty-socketIo通信,前端需要声明连接类型为:transPorts:["websocket"],后端配置的时候也需要声明

      不然集群环境下会抛出session unauthorized register 然后断开连接。

  • 相关阅读:
    Scala学习笔记(四)—— 数组
    Scala学习笔记(三)—— 方法和函数
    Scala学习笔记(二)——Scala基础
    Scala学习笔记(一)
    HDFS和GFS对比学习
    HDFS原理学习
    c++日历问题
    Mapreduce学习
    c++动态规划解决数塔问题
    C++——数码管
  • 原文地址:https://www.cnblogs.com/veblen/p/14085203.html
Copyright © 2011-2022 走看看