Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Поддержка состояния клиента

Поскольку контейнер создаёт объект класса конечной точки для каждого соединения, вы можете определить и использовать переменные объекта для хранения информации о состоянии клиента. Кроме того, метод Session.getUserProperties предоставляет изменяемое отображение (Map) для хранения кастомных свойств. Например, следующая конечная точка отвечает на входящие текстовые сообщения с содержимым предыдущего сообщения от каждого клиента:

@ServerEndpoint("/delayedecho")
public class DelayedEchoEndpoint {
   @OnOpen
   public void open(Session session) {
      session.getUserProperties().put("previousMsg", " ");
   }
   @OnMessage
   public void message(Session session, String msg) {
      String prev = (String) session.getUserProperties()
                                    .get("previousMsg");
      session.getUserProperties().put("previousMsg", msg);
      try {
         session.getBasicRemote().sendText(prev);
      } catch (IOException e) { ... }
   }
}

Для хранения информации, общей для всех подключённых клиентов, вы можете использовать статические переменные. Однако в этом случае вы несёте ответственность за потокобезопасность (thread-safe) доступа.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)