WebSocket异常: The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for call

public static void sendText2(Session session,String message){
if (!session.isOpen()){
return;
}
// synchronized (session){
/**
* sessoion 这边向前端推送有两个方法 getAsyncRemote 异步方式 getBasicRemote 同步方式
* 这边采用的是同步方式反应速度比较快 但是后期可能出现 等待线程情况 getBasicRemote 如果向多个连接推送的话
* 需要排队发送一个一个来的情况
*/
Async async = session.getAsyncRemote();

    // sendText 发送消息
    async.sendText(message); //异常报错

// }
}
以上为报错代码。处理方案:在发送消息处加上synchronized 同步

public static void sendText2(Session session,String message){
if (!session.isOpen()){
return;
}
synchronized (session){
/**
* sessoion 这边向前端推送有两个方法 getAsyncRemote 异步方式 getBasicRemote 同步方式
* 这边采用的是同步方式反应速度比较快 但是后期可能出现 等待线程情况 getBasicRemote 如果向多个连接推送的话
* 需要排队发送一个一个来的情况
*/
Async async = session.getAsyncRemote();

    // sendText 发送消息
    async.sendText(message); //异常报错
    }

}

原因:多session同时调用同一个方法,引起冲突

猜你喜欢

转载自blog.csdn.net/qq_36551344/article/details/81531013