The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method的问题在于:
handlerA和handlerB两个方法有可能同时执行,当A或者B方法遍历到某一个session并且调用sendMessage发送消息的时候,另外一个方法也正好也在使用相同的session发送另外一个消息(同一个session消息发送冲突了,也就是说同一个时刻,多个线程向一个socket写数据冲突了),就会报TEXT_FULL_WRITING异常。
一般采用的解决方案是:
使用同步锁加同步发送(session.getBasicRemote())的方式,但很多时候需要异步发送。
在我的项目中,采用Tomcat,TEXT_FULL_WRITING会直接导致websocket连接断掉,采用这种解决方案能保证一个session同时只会在发送一条消息,所以避免了TEXT_FULL_WRITING错误。文章来源:https://www.toymoban.com/news/detail-602848.html
这种解决方案只是利用一种缓冲加惰性判断的方式,并不是标准解决方案,如果觉得这种方案有什么问题,或者有更好的方案,可以大家讨论下。
文章来源地址https://www.toymoban.com/news/detail-602848.html
到了这里,关于服务端发送消息给客户端失败java.lang.IllegalStateException: The remote endpoint was in state [TEXT_FULL_WRITING]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!