これは、sendText()の処理が終わる前に、再度sendText()が呼び出されたためです。
sendText()の処理は非同期で行われるために、メソッドが戻ってきたとしてもメッセージ送信が終了している保証はありません。
これを防ぐためには、sendText()の戻り値であるFutre型のオブジェクトのget()を呼び出して、処理が終わるのを待つ必要があります。
public void sendMessageToBrowser(String message) { for (Session s : sessions) { Future future = s.getAsyncRemote().sendText(message); try { future.get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
0 件のコメント:
コメントを投稿