2018-03-28 spring websocket java.lang.IllegalStateException

之前文章介绍了websocket注入service快速解决方案


在运行之后无异常, 但是今天发送信息时后台抛出java.lang.IllegalStateException异常, 虽然对运行无影响, 但是这不是要逼死强迫症吗, 于是开始百度


异常完整信息:

    java.lang.IllegalStateException: the remote endpoint was in state [TEXT_PARTIAL_WAITING]

异常为response.sendRedirect抛出  websocket尝试在同一时间操作session导致

在sendMessage的时候将session锁住

    synchronized(session) {

        session.sendMessage()}

发送信息的时候不会报错, 但是前端异常结束仍然会抛出这个错误,因为没有执行closeSocket操作,后台不知道这个session已经断开,没有移除队列。在获取错误方法中添加移除操作,就行了。抛一次错就将这个session移除,前端重新连接就好了


PS:这里划重点:多半都是因为你在捕获错误后对前端发送信息导致,在错误发生的时候此session就已经断开了,再通过这个发信息前端收不到肯定就是等待状态了啊。。。因为我用的是安全队列,刚开始我也想了半天为什么会有阻塞,其实真正根源在这里!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢梦敢当阅读 8,944评论 0 50
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 编译原理几乎是计算机专业中最晦涩难懂的课程。很多学生学这门课只不过是为了通过考试,学完后对编译原理之精妙仍然是摸不...
    望月从良阅读 660评论 2 6
  • 终于还是看了《荒野猎人》,不是在影院。景色很美,内容也很血腥。如果是在影院应该更震撼。 其实现在的电影情节,都是套...
    海涛笔记阅读 441评论 0 1
  • 又是雪。在昆仑,这真的是平淡得有点讨厌的存在了,掩埋了所有关于生命的悸动。一如她此刻的心境。 真的平静到寒凉,甚至...
    桃妖妖阅读 207评论 0 0