我在客户端使用java web和angularJs创建了一个Web应用程序。服务器中发生了实时数据,我希望每当发生某些事情时都要更新客户端(浏览器)。
我目前正在使用Web套接字,我连接到服务器并使用'onMessage'方法接收数据。
以下是代码的一部分:
var ws = $websocket('ws://' + location.host + '/' + window.location.href.split('/')[3] + '/ws/rt');
ws.onMessage(function (event) {
// code that updates the page
}):
在服务器中,我调用方法sendText将数据发送到客户端。
Ws.ACTIVE_SESSIONS.entrySet().stream().forEach((session) -> {
synchronized (LOCK) {
session.getKey().getAsyncRemote().sendText(message);
}
}
});
我发送的数据由数据和图像组成,因此数据量很大。
我的问题是服务器有时发送此异常而客户端没有更新:
java.lang.IllegalStateException: The remote endpoint
was in state [TEXT_FULL_WRITING] which is an invalid state for called
method
我已经将我的OnMessage方法改为此,但它没有解决问题。
@OnMessage
public void onMessage(String message, Session session) {
...
}
这样做的最佳方法是什么?避免这种异常?