サーバーがクライアントにメッセージを送信できません java.lang.IllegalStateException: リモート エンドポイントは [TEXT_FULL_WRITING] 状態でした

リモート エンドポイントの状態は [TEXT_FULL_WRITING] であり、呼び出されたメソッドに対して無効な状態です。

handlerA と handlerB の 2 つのメソッドは同時に実行される場合があります. A または B メソッドが特定のセッションをトラバースし、sendMessage を呼び出してメッセージを送信すると、もう一方のメソッドも同じセッションを使用して別のメッセージを送信します (同じセッション メッセージつまり、同時に複数のスレッドがデータの競合をソケットに書き込みます)、TEXT_FULL_WRITING 例外が報告されます。

一般的に採用されているソリューションは次のとおりです。

同期ロックと同期送信 (session.getBasicRemote()) を使用しますが、多くの場合、非同期送信が必要になります。

 

私のプロジェクトでは、Tomcat を使用すると、TEXT_FULL_WRITING によって websocket 接続が直接切断されます.このソリューションを使用すると、セッションが同時に 1 つのメッセージのみを送信するようになり、TEXT_FULL_WRITING エラーが回避されます.

この解決策はバッファと怠惰な判断方法のみを使用しており、標準的な解決策ではありません.この解決策に問題があると思われる場合、またはより良い解決策がある場合は、議論することができます.
 

おすすめ

転載: blog.csdn.net/wufaqidong1/article/details/129857812
おすすめ